我在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中沒有找到任何相關的命令。
有什麼建議嗎?
我在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中沒有找到任何相關的命令。
有什麼建議嗎?
redis(和其他K/v商店)的想法是爲你建立一個索引。數據庫不會爲你做。這與關係數據庫有很大的不同,後者可以提供更好的性能。
所以當你的應用程序創建一個哈希值時,把它的密鑰放到一個SET中。當您的應用程序刪除散列時,從SET中刪除它的密鑰。然後獲取哈希ID列表,只需使用SMEMBERS獲取SET的內容即可。
您可以使用SCAN
命令從Redis獲取所有密鑰。然後對於每個密鑰,使用TYPE
命令檢查它是否是散列。
您能進一步解釋我需要的命令集執行 ? – ohadinho
[SCAN](https://redis.io/commands/scan)命令用於遞增地在Redis中迭代密鑰。使用此命令,您可以在Redis中獲取所有密鑰。 [TYPE](https://redis.io/commands/type)命令用於獲取密鑰的類型。有關更多詳細信息,請參閱文檔。 –
這是一個很好的解決方法,但我不想在我的應用程序中爲此方案編寫代碼。 – ohadinho
它不是一個解決方法,你必須這樣做。您有責任通常使用SET來構建和管理自己的索引 - 因此,如果您需要能夠檢索與您的應用相關的某種類型的所有HASH(例如用戶),則需要保留一個稱爲用戶的SET,您將其添加/根據需要刪除您的HASH鍵 –
這兩個答案都可能有效,具體取決於上下文。我們在問題中沒有足夠的上下文信息來知道哪一個更好(例如:他們在數據庫中的密鑰是什麼?它是否在生產中?) –