有沒有辦法檢索以redis中的特定字符串開頭的所有密鑰?有沒有辦法檢索以redis中的特定字符串開頭的所有密鑰?
我要像做存儲:
'thing1:userid1' : ' ';
'thing1:userid2' : ' ';
'thing2:userid1' : ' ';
'thing2:userid2' : ' ';
和檢索每一個thing1
,而無需知道每一個用戶。
有沒有辦法檢索以redis中的特定字符串開頭的所有密鑰?有沒有辦法檢索以redis中的特定字符串開頭的所有密鑰?
我要像做存儲:
'thing1:userid1' : ' ';
'thing1:userid2' : ' ';
'thing2:userid1' : ' ';
'thing2:userid2' : ' ';
和檢索每一個thing1
,而無需知道每一個用戶。
REDIS.keys("thing1:*")
但是,您可能要考慮使用地圖。
REDIS.hset("thing1", "user1", "")
REDIS.hset("thing1", "user2", "")
REDIDS.hgetall("thing1")
在生產中要小心。 Redis一次只能處理一個命令,而KEYS速度很慢。它必須查看整個數據庫中的每個密鑰。
有在搜索所有鍵名的指定圖案Redis的一個KEYS命令。但使用此命令時應該小心,因爲它具有O(N)時間複雜性,所以性能取決於數據庫中密鑰的數量。它主要用於調試,不適用於生產環境。
您還可以跟蹤列表中的ID,然後使用SORT http://redis.io/commands/SORT檢索所有密鑰(或散列)的值。
它比「鑰匙」更復雜一點,但它可以做的還有很多(:
我讀的地方,hgetall可以給你的問題,如果你在一個散有太多的領域,可惜我不能找到參考ATM
可以使用SCAN命令遍歷該匹配給定模式的所有密鑰:
> SCAN 0 MATCH thing1:*
1) "172032"
2) 1) "thing1:userid1"
2) "thing1:userid2"
> SCAN 172032 MATCH thing1:*
1) "0"
2) 1) "thing1:userid3"
哎,是啊,我使用的地圖,但現在認爲這將是有益的以較低的因爲我只在一段時間內呆過一段時間,只需要做出當然,我仍然可以在需要的時候得到所有的鑰匙。謝謝! – fancy