<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redis分片機(jī)制

          共 2473字,需瀏覽 5分鐘

           ·

          2020-11-17 02:52

          作者:小飛

          來源:SegmentFault 思否




          為什么需要分片機(jī)制


          如果需要存儲(chǔ)海量的內(nèi)存數(shù)據(jù),如果只使用一臺(tái)redis,則無法保證redis工作的效率。大量時(shí)間都浪費(fèi)到了尋址中,所以需要一種機(jī)制能夠滿足該要求。


          采用分片機(jī)制實(shí)現(xiàn):






          Redis分片搭建


          搭建注意事項(xiàng)


          Redis服務(wù)的啟動(dòng)需要依賴于redis.conf的配置文件,如果需要準(zhǔn)備多臺(tái)redis則需要多個(gè)redis.conf的配置。


          準(zhǔn)備端口號(hào):


          1.6379
          2.6380
          3.6381




          分片實(shí)現(xiàn)



          修改端口號(hào):將各自的端口號(hào)進(jìn)行修改
          1.進(jìn)入各自的redis.conf文件中
          2.修改各自的端口號(hào)




          啟動(dòng)redis服務(wù)器




          校驗(yàn)服務(wù)器是否正常運(yùn)行






          關(guān)于分片的注意事項(xiàng)


          1.問題描述:
          當(dāng)啟動(dòng)多臺(tái)redis服務(wù)器之后,多臺(tái)redis暫時(shí)沒有必然的聯(lián)系,各自都是獨(dú)立的實(shí)體,可以數(shù)據(jù)的存儲(chǔ)。
          如圖所示:


          2.如果將分片通過程序的方式進(jìn)行操作,要把3太redis當(dāng)做一個(gè)整體,所以與上述的操作完全不同,不會(huì)出現(xiàn)一個(gè)key同時(shí)保存到多個(gè)redis的現(xiàn)象。





          分片入門案例


          /**     * 測(cè)試Redis分片機(jī)制     * 思考: shards 如何確定應(yīng)該存儲(chǔ)到哪臺(tái)redis中呢???     */    @Test    public void testShards(){        List shards = new ArrayList<>();        shards.add(new JedisShardInfo("192.168.126.129",6379));        shards.add(new JedisShardInfo("192.168.126.129",6380));        shards.add(new JedisShardInfo("192.168.126.129",6381));        //準(zhǔn)備分片對(duì)象        ShardedJedis shardedJedis = new ShardedJedis(shards);        shardedJedis.set("shards","redis分片測(cè)試");        System.out.println(shardedJedis.get("shards"));    }


          一致性hash算法


          一般的hash是8為16禁止數(shù)。0---9 A--F 組合總共為2^32。
          如果對(duì)相同的數(shù)據(jù)進(jìn)行hash運(yùn)算,結(jié)果必然相同。
          一個(gè)數(shù)據(jù)1M和數(shù)據(jù)1G的hash運(yùn)算的速度一致。




          一致性hash算法介紹


          一致性哈希算法在1997年由麻省理工學(xué)院提出,是一種特殊的哈希算法,目的是解決分布式緩存的問題。[1] 在移除或者添加一個(gè)服務(wù)器時(shí),能夠盡可能小地改變已存在的服務(wù)請(qǐng)求與處理請(qǐng)求服務(wù)器之間的映射關(guān)系。一致性哈希解決了簡(jiǎn)單哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的動(dòng)態(tài)伸縮等問題。





          特性


          平衡性


          概念:平衡性是指hash的結(jié)果應(yīng)該平均分配到各個(gè)節(jié)點(diǎn),這樣從算法上解決了負(fù)載均衡問題。(大致平均)


          問題描述: 由于節(jié)點(diǎn)都是通過hash方式進(jìn)行算計(jì).所以可能出現(xiàn)如圖中的現(xiàn)象.,導(dǎo)致負(fù)載嚴(yán)重不平衡。




          解決方法:引入虛擬節(jié)點(diǎn)


          單調(diào)性


          特點(diǎn):?jiǎn)握{(diào)性是指在新增或者刪減節(jié)點(diǎn)時(shí),不影響系統(tǒng)正常運(yùn)行。



          分散性


          分散性是指數(shù)據(jù)應(yīng)該分散地存放在分布式集群中的各個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)自己可以有備份),不必每個(gè)節(jié)點(diǎn)都存儲(chǔ)所有的數(shù)據(jù) 。




          SpringBoot整合Redis分片


          編輯配置文件


          # 配置redis單臺(tái)服務(wù)器redis.host=192.168.126.129redis.port=6379
          # 配置redis分片機(jī)制redis.nodes=192.168.126.129:6379,192.168.126.129:6380,192.168.126.129:6381

          編輯配置類


          @Configuration@PropertySource("classpath:/properties/redis.properties")public class JedisConfig {
          @Value("${redis.nodes}") private String nodes; //node,node,node.....
          //配置redis分片機(jī)制 @Bean public ShardedJedis shardedJedis(){ nodes = nodes.trim(); //去除兩邊多余的空格 List shards = new ArrayList<>(); String[] nodeArray = nodes.split(","); for (String strNode : nodeArray){ //strNode = host:port String host = strNode.split(":")[0]; int port = Integer.parseInt(strNode.split(":")[1]); JedisShardInfo info = new JedisShardInfo(host, port); shards.add(info); } return new ShardedJedis(shards); } }


          修改AOP注入項(xiàng)





          點(diǎn)擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動(dòng)和交流。

          -?END -

          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一到本在线视频无码 | 丁香人人六月综合查询 | 成人黄色片在线免费看 | 美女草比视频 | www.亚洲成人 |