您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Redis Sharding集群的特點,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Redis Sharding集群
Redis 3正式推出了官方集群技術,解決了多Redis實例協(xié)同服務問題。Redis Cluster可以說是服務端Sharding分片技術的體現(xiàn),即將鍵值按照一定算法合理分配到各個實例分片上,同時各個實例節(jié)點協(xié)調(diào)溝通,共同對外承擔一致服務。
多Redis實例服務,比單Redis實例要復雜的多,這涉及到定位、協(xié)同、容錯、擴容等技術難題。這里,我們介紹一種輕量級的客戶端Redis Sharding技術。
Redis Sharding可以說是Redis Cluster出來之前,業(yè)界普遍使用的多Redis實例集群方法。其主要思想是采用哈希算法將Redis數(shù)據(jù)的key進行散列,通過hash函數(shù),特定的key會映射到特定的Redis節(jié)點上。這樣,客戶端就知道該向哪個Redis節(jié)點操作數(shù)據(jù)。
慶幸的是,java redis客戶端驅(qū)動jedis,已支持Redis Sharding功能,即ShardedJedis以及結合緩存池的ShardedJedisPool。
Jedis的Redis Sharding實現(xiàn)具有如下特點:
采用一致性哈希算法(consistent hashing),將key和節(jié)點name同時hashing,然后進行映射匹配,采用的算法是MURMUR_HASH。
采用一致性哈希而不是采用簡單類似哈希求模映射的主要原因是當增加或減少節(jié)點時,不會產(chǎn)生由于重新匹配造成的rehashing。一致性哈希只影響相鄰節(jié)點key分配,影響量小。
為了避免一致性哈希只影響相鄰節(jié)點造成節(jié)點分配壓力,ShardedJedis會對每個Redis節(jié)點根據(jù)名字(沒有,Jedis會賦予缺省名字)會虛擬化出160個虛擬節(jié)點進行散列。
根據(jù)權重weight,也可虛擬化出160倍數(shù)的虛擬節(jié)點。用虛擬節(jié)點做映射匹配,可以在增加或減少Redis節(jié)點時,key在各Redis節(jié)點移動再分配更均勻,而不是只有相鄰節(jié)點受影響。
ShardedJedis支持keyTagPattern模式,即抽取key的一部分keyTag做sharding,這樣通過合理命名key,可以將一組相關聯(lián)的key放入同一個Redis節(jié)點,這在避免跨節(jié)點訪問相關數(shù)據(jù)時很重要。
關于Redis Sharding集群的特點就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。