我使用Redis 3.0.6Redis通配符搜索和返回哈希值(%字)
我試圖使用Redis創建自動完成功能。我把三樣東西放在哈希,樂隊名稱,等級和創建年份中。
我想做一個通配符搜索,以獲得以特定字母及其附加功能開頭的樂隊名稱,如他們的排名和年份。
我該怎麼做?是否可以立即做,或者我需要一個子查詢來獲得他們的屬性?
HMSET 3doorsdown rank 7 year 2003
OK
127.0.0.1:6379> HMSET adele rank 1 year 2005
OK
127.0.0.1:6379> HMSET almora rank 3 year 1995
OK
127.0.0.1:6379> HMSET amiina rank 2 year 2009
OK
127.0.0.1:6379> HMSET anathema rank 4 year 1990
OK
127.0.0.1:6379> HMSET birdy rank 6 year 2012
OK
127.0.0.1:6379> HMSET blink182 rank 5 year 1999
OK
SCAN 0 match a* COUNT 1000
返回以a開頭的所有記錄,而不是他們的隊伍和多年。
1) "0"
2) 1) "adele"
2) "almora"
3) "anathema"
4) "amiina"
127.0.0.1:6379>
https://stackoverflow.com/a/33625191/3210431
我沒有使用的密鑰,因爲它的價格昂貴,但它也已經表示,SCAN是昂貴的(上圖),太。
我該怎麼辦?我是否需要在SET中保留名字,通過掃描進行匹配,如果有匹配,我應該按照他們的名字單獨在HASHES中查找這些記錄,如下所示?
1)尋找與一個在SET
2-)4條返回
3-)通過HGETALL獲取其特徵HASHES
編輯開始樂隊的名字:我有另一個想法。我將名字保存在SET中,使用ZRANGEBYLEX並在HASH中進行另一個查詢以獲取屬性,但我不知道哪一個是正確的方法。
編輯中的方法是自2.8中引入詞典範圍以來的方法。 –
@ItamarHaber非常感謝你! – salep