2012-11-13 60 views
1

我在這些服務器的動態實例化羣集中使用Node + Redis。當這些服務器實例化(在單獨的虛擬機上)時,我想切斷數據庫。我有一個哈希環函數來將鍵指向相應的服務器。
如何迭代商店中的所有密鑰?
然後,當通過哈希環推送該密鑰時,如何處理被推回到當前服務器而不會導致無限循環的密鑰?
我需要本地新的redis實例嗎?然後在操作完成後殺死舊的?有沒有一種方法讓節點redis客戶端執行此操作?移動所有redis記錄

回答

2

不幸的是,到目前爲止,Redis中沒有適當的密鑰空間迭代。你有兩種選擇:

  • 使用RANDOMKEY隨機採樣數據集。
  • 使用KEYS *即阻止,但可以做的伎倆,如果你可以阻止幾秒鐘的服務器。

要自動移動密鑰,如果您使用Redis 2.6,則可以使用MIGRATE,但是在您的問題中沒有明確指定您的羣集設置,並且設計適當的Redis羣集充滿了詳細信息。

我建議你閱讀的Redis集羣規格這裏:http://redis.io/topics/cluster-spec 而下面的博​​客張貼有關創建最終一致Redis的集羣客戶端:http://antirez.com/news/36