最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis?Key使用{}原因分析

 更新時(shí)間:2023年09月27日 10:47:44   作者:AC編程  
這篇文章主要為大家介紹了Redis中Key中為什么要使用{}原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Redis集群介紹

Redis集群是一個(gè)提供在多個(gè)Redis間節(jié)點(diǎn)間共享數(shù)據(jù)的程序集,Redis集群能夠?qū)崿F(xiàn)key的分片,分片能使key均勻地分布到集群的機(jī)器上去,能保證數(shù)據(jù)的一致性。

使用Redis集群需要注意的點(diǎn)

從Redis單實(shí)例切換到twemproxy集群時(shí),有些需要注意的地方。
1、不支持的方法:

KEYS、MIGRATE、SCAN等

2、支持但需特殊處理的方法:

MSET、SINTERSTORE、SUNIONSTORE、ZINTERSTORE、ZUNIONSTORE等

對(duì)于不支持的方法,在使用時(shí)需要尋找替代方案。

Redis集群的數(shù)據(jù)分片

Redis集群沒有使用一致性hash,而是引入了哈希槽的概念。

Redis集群有16384個(gè)哈希槽,每個(gè)key通過CRC16校驗(yàn)后對(duì)16384取模來決定放置哪個(gè)槽。集群的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分hash槽,舉個(gè)例子,比如當(dāng)前集群有3個(gè)節(jié)點(diǎn),那么:

節(jié)點(diǎn) A 包含 0 到 5500號(hào)哈希槽。
節(jié)點(diǎn) B 包含5501 到 11000 號(hào)哈希槽。
節(jié)點(diǎn) C 包含11001 到 16384號(hào)哈希槽。

這種結(jié)構(gòu)很容易添加或者刪除節(jié)點(diǎn)。比如如果我想新添加個(gè)節(jié)點(diǎn)D, 我需要從將節(jié)點(diǎn) A、B、C中的部分槽到D上。如果我想移除節(jié)點(diǎn)A,需要將A中的槽移到B和C節(jié)點(diǎn)上,然后將沒有任何槽的A節(jié)點(diǎn)從集群中移除即可。 由于從一個(gè)節(jié)點(diǎn)將哈希槽移動(dòng)到另一個(gè)節(jié)點(diǎn)并不會(huì)停止服務(wù),所以無論添加刪除或者改變某個(gè)節(jié)點(diǎn)的哈希槽的數(shù)量都不會(huì)造成集群不可用的狀態(tài)。

MSET

單實(shí)例上的MSET是一個(gè)原子性(atomic)操作,所有給定key都會(huì)在同一時(shí)間內(nèi)被設(shè)置,某些給定key被更新而另一些給定key沒有改變的情況,不可能發(fā)生。

而集群上雖然也支持同時(shí)設(shè)置多個(gè)key,但不再是原子性操作。會(huì)存在某些給定 key 被更新而另外一些給定key沒有改變的情況。其原因是需要設(shè)置的多個(gè)key可能分配到不同的機(jī)器上。

SINTERSTORE、SUNIONSTORE、ZINTERSTORE、ZUNIONSTORE

這四個(gè)命令屬于同一類型。它們的共同之處是都需要對(duì)一組key進(jìn)行運(yùn)算或操作,但要求這些key都被分配到相同機(jī)器上。這就是分片技術(shù)的矛盾之處:即要求key盡可能地分散到不同機(jī)器,又要求某些相關(guān)聯(lián)的key分配到相同機(jī)器。

Hash Tags

解鈴還需系鈴人,解決方法還是從分片技術(shù)的原理上找。

分片,就是一個(gè)hash的過程:對(duì)key做md5,sha1等hash算法,根據(jù)hash值分配到不同的機(jī)器上。為了實(shí)現(xiàn)將key分到相同機(jī)器,就需要相同的hash值,即相同的key(改變hash算法也行,但不簡(jiǎn)單)。但key相同是不現(xiàn)實(shí)的,因?yàn)閗ey都有不同的用途。例如user:user1:ids保存用戶的tweets ID,user:user1:tweets保存tweet的具體內(nèi)容,兩個(gè)key不可能同名。

仔細(xì)觀察user:user1:idsuser:user1:tweets,兩個(gè)key其實(shí)有相同的地方,即user1。能不能拿這一部分去計(jì)算hash呢?

這就是Hash Tag,允許用key的部分字符串來計(jì)算hash。當(dāng)一個(gè)key包含{} 的時(shí)候,就不對(duì)整個(gè)key做hash,而僅對(duì){} 包括的字符串做hash。假設(shè)hash算法為sha1。對(duì)user:{user1}:idsuser:{user1}:tweets,其hash值都等同于sha1(user1)。

HashTag可能會(huì)使過多的key分配到同一個(gè)slot中,造成數(shù)據(jù)傾斜影響系統(tǒng)的吞吐量,務(wù)必謹(jǐn)慎使用。

以上就是Redis Key使用{}原原因分析的詳細(xì)內(nèi)容,更多關(guān)于Redis Key使用{}的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Redis過期Key刪除策略和內(nèi)存淘汰策略的實(shí)現(xiàn)

    Redis過期Key刪除策略和內(nèi)存淘汰策略的實(shí)現(xiàn)

    當(dāng)內(nèi)存使用達(dá)到上限,就無法存儲(chǔ)更多數(shù)據(jù)了,為了解決這個(gè)問題,Redis內(nèi)部會(huì)有兩套內(nèi)存回收的策略,過期Key刪除策略和內(nèi)存淘汰策略,本文就來詳細(xì)的介紹一下這兩種方法,感興趣的可以了解一下
    2024-02-02
  • 基于Redis過期事件實(shí)現(xiàn)訂單超時(shí)取消

    基于Redis過期事件實(shí)現(xiàn)訂單超時(shí)取消

    這篇文章主要介紹了基于Redis過期事件實(shí)現(xiàn)訂單超時(shí)取消,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • redis并發(fā)之跳表的實(shí)現(xiàn)

    redis并發(fā)之跳表的實(shí)現(xiàn)

    跳表是一種用于實(shí)現(xiàn)有序集合的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了redis并發(fā)之跳表的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Redis Pipeline(管道) 詳解

    Redis Pipeline(管道) 詳解

    Pipeline管道是 Redis 提供的一種批量執(zhí)行命令的機(jī)制,通過將多個(gè)命令一次性發(fā)送到服務(wù)器并統(tǒng)一接收響應(yīng),減少網(wǎng)絡(luò)往返次數(shù)(RTT) ,顯著提升執(zhí)行效率,這篇文章主要介紹了Redis Pipeline 詳解,需要的朋友可以參考下
    2025-04-04
  • Redis分布式非公平鎖的使用

    Redis分布式非公平鎖的使用

    分布式鎖很多人都能接觸到,本文主要介紹了Redis分布式非公平鎖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Redis的主從復(fù)制機(jī)制以及主從復(fù)制的實(shí)現(xiàn)方法

    Redis的主從復(fù)制機(jī)制以及主從復(fù)制的實(shí)現(xiàn)方法

    本文介紹了Redis的主從復(fù)制機(jī)制,包括異步同步、快照同步、增量同步以及如何配置主從服務(wù)器,主從同步包括增量同步和快照同步兩種方式,增量同步通過指令流實(shí)現(xiàn),快照同步通過快照文件傳輸數(shù)據(jù),主從復(fù)制可以提高系統(tǒng)的穩(wěn)定性和性能,但也需要合理配置資源以避免資源浪費(fèi)
    2026-02-02
  • redisson中RRateLimiter分布式限流器的使用

    redisson中RRateLimiter分布式限流器的使用

    Redisson Ratelimiter是Redisson框架中的一種限流算法,用于限制對(duì)資源的訪問頻率,本文主要介紹了redisson中RRateLimiter分布式限流器的使用,感興趣的可以了解一下
    2024-06-06
  • Redis 事務(wù)與過期時(shí)間詳細(xì)介紹

    Redis 事務(wù)與過期時(shí)間詳細(xì)介紹

    這篇文章主要介紹了Redis 事務(wù)與過期時(shí)間詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Redis過期鍵刪除策略解讀

    Redis過期鍵刪除策略解讀

    Redis通過惰性刪除策略和定期刪除策略來管理過期鍵,惰性刪除策略在鍵被訪問時(shí)檢查是否過期并刪除,節(jié)省CPU開銷但可能導(dǎo)致過期鍵滯留,定期刪除策略定期掃描并刪除過期鍵,保證數(shù)據(jù)庫干凈但可能影響性能,Redis默認(rèn)同時(shí)使用兩種策略
    2025-01-01
  • Redis中的數(shù)據(jù)過期策略詳解

    Redis中的數(shù)據(jù)過期策略詳解

    這篇文章主要介紹了Redis中的數(shù)據(jù)過期策略,文中通過示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01

最新評(píng)論

林口县| 微山县| 修文县| 东乌珠穆沁旗| 融水| 灵寿县| 黄大仙区| 康保县| 民和| 江山市| 民县| 常德市| 太湖县| 洪洞县| 大新县| 洪洞县| 广昌县| 隆化县| 北流市| 临夏县| 泉州市| 西宁市| 丽水市| 凌云县| 新宾| 正镶白旗| 安达市| 衡阳市| 泰安市| 祁东县| 株洲县| 绵竹市| 隆回县| 武平县| 库伦旗| 砀山县| 龙胜| 元阳县| 堆龙德庆县| 公安县| 安吉县|