2016-12-14 70 views
2

我在Redis的緩存哈希值,如:獲取所有散列存在於redis的

Hash   Key Value 
hashme:1 Hello World 
hashme:2 Here Iam 
myhash:1 Next One 

我的目標是讓哈希作爲CLI輸出,如:

hashme 
myhash 

如果沒有這樣也可以:

hashme:1 
hashme:2 
myhash:1 

我在Redis API中沒有找到任何相關的命令。

有什麼建議嗎?

回答

1

redis(和其他K/v商店)的想法是爲你建立一個索引。數據庫不會爲你做。這與關係數據庫有很大的不同,後者可以提供更好的性能。

所以當你的應用程序創建一個哈希值時,把它的密鑰放到一個SET中。當您的應用程序刪除散列時,從SET中刪除它的密鑰。然後獲取哈希ID列表,只需使用SMEMBERS獲取SET的內容即可。

+0

這是一個很好的解決方法,但我不想在我的應用程序中爲此方案編寫代碼。 – ohadinho

+0

它不是一個解決方法,你必須這樣做。您有責任通常使用SET來構建和管理自己的索引 - 因此,如果您需要能夠檢索與您的應用相關的某種類型的所有HASH(例如用戶),則需要保留一個稱爲用戶的SET,您將其添加/根據需要刪除您的HASH鍵 –

+0

這兩個答案都可能有效,具體取決於上下文。我們在問題中沒有足夠的上下文信息來知道哪一個更好(例如:他們在數據庫中的密鑰是什麼?它是否在生產中?) –

1

您可以使用SCAN命令從Redis獲取所有密鑰。然後對於每個密鑰,使用TYPE命令檢查它是否是散列。

+1

您能進一步解釋我需要的命令集執行 ? – ohadinho

+0

[SCAN](https://redis.io/commands/scan)命令用於遞增地在Redis中迭代密鑰。使用此命令,您可以在Redis中獲取所有密鑰。 [TYPE](https://redis.io/commands/type)命令用於獲取密鑰的類型。有關更多詳細信息,請參閱文檔。 –

相關問題