Redis 怎麼讓相關鍵都分配到集群中的同乙個節點

2021-10-24 14:54:43 字數 765 閱讀 8434

為什麼有時候要讓相關鍵都分配到同乙個節點?

因為如果命令涉及到多個鍵,那麼只有這些鍵都位於同乙個節點裡,redis才能正常支援該命令。

redis是按照什麼路由規則,分配鍵到節點的?

因為redis集群內建插槽為16384個,所以redis會將每個鍵的鍵名的有效部分使用crc16演算法計算出雜湊值,然後對16384的取餘。餘數為多少就表示該鍵應該被分配到哪個節點,這樣的話,每個鍵都可以被分配到16384個插槽中,而集群中的每個節點都會被分配一定的插槽。

關鍵就在每個鍵的鍵名的有效部分,因為redis是根據每個鍵的鍵名的有效部分使用crc16演算法計算出的雜湊值來分配鍵的,那麼如果想要讓相關鍵都分配到集群中的同乙個節點裡,只需要讓相關鍵的鍵名的有效部分相同即可。

那麼鍵名的有效部分指的是什麼?

比如鍵user.name的有效部分就是「user.name」,鍵.name的有效部分就是」user」。

需求:讓id為101的使用者的username和age屬性分配到同乙個節點,方便之後批量取出。

操作示例:

可以發現設值操作時,username和age都被分配到了6382埠節點例項,屬於同乙個節點,所以之後可以支援mget命令一次操作兩個鍵。

redis 資料庫相關 鍵空間

版本 5.0 結構typedef struct redisdb redisdb 讀寫鍵空間時的維護操作 說明 對鍵空間執行指定的讀寫操作外,還會執行其他額外的維護操作 讀取鍵後,會根據鍵是否存在更新伺服器鍵空間命中 hit 或不命中 miss 次數,可以通過 info stat 命令中的 keysp...

Redis排序相關

1 sort按照鍵值從小到大排序 sort key desc 降序 對數字排序 sort key alpha 按照字元排序 2 limit 限制返回的條數 3 根據外部key的權重進行排序 4 根據排序結果進行排序 sort uid get user name 5 將排序結果進行儲存 如果使用red...

Redis相關學習

remote dictionary server redis 是乙個由salvatore sanfilippo寫的key value儲存系統。redis是乙個開源的使用ansi c語言編寫 遵守bsd協議 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api。它...