2015-04-01 128 views
5

在客戶端分片方法中,我可以創建分片並將zset存儲在該單個分片中。使用Redis集羣,zset可以有多大?如果要成爲redis中所有密鑰的索引,如何縮放zsets。Redis集羣和zsets

+0

你能解釋你的分片鍵是什麼嗎?你也想把你的zset分割成分片或分片分割的分片。因爲根據這裏的文檔,___分區粒度是關鍵,所以不可能像一個非常大的有序集合一樣使用一個巨大的關鍵字對數據集進行分片___。在這裏查看redis文檔:http://redis.io/主題/分區 – skippy 2015-04-10 01:59:11

回答

5

簡短回答:是 - 您可以將所有密鑰名稱存儲在單個分類集中。

Redis Sorted Set最多可以有2^32 - 1(4294967295)個成員,每個成員都由長達512MB的字符串和64位的分數組成(對於數據庫中鍵的數量也是一樣的限制)。這適用於獨立的Redis以及Redis羣集,並允許將〜2048PB存儲在單個排序集中:)

在Redis集羣中,每個密鑰都屬於特定的散列槽。因此,無論上面的理論大小限制如何,分類集只能和最大的分片(即Redis服務器)一樣大。雖然分片可以管理一個插槽,並且一個插槽可以容納一個密鑰 - 但由於可擴展性問題,我幾乎不推薦這種方法。

索引您的所有密鑰是一項有趣的挑戰 - 爲什麼要這樣做?更重要的是,您希望針對該索引運行哪些類型的查詢?根據數據庫中鍵的數量和查詢需求,可能有其他更有效的方法來實現這一點。

+0

如果我的命令是「zadd to_be_expired 142791950 user1」,那麼這裏的密鑰是to_be_expired,成員是user1。如果我將其他成員添加到zset中,它們將存儲在同一個redis實例中?那麼如果我使用zset,一個redis實例將爲所有流量提供服務? – Phoenix 2015-04-11 19:49:39

+0

Exactomundo(yes) – 2015-04-11 20:06:22

+0

但是,如果單個服務器遇到頻繁檢測信號的所有請求,這些請求將不可擴展。 – Phoenix 2015-04-13 01:34:05