2016-04-21 47 views
0

我在我的Redis數據庫中有一個文件夾(我相信你稱它爲一個集合),名爲「g」,我在那裏存儲一些密鑰。返回鍵沒有集

KEYS *g:* 

返回

g: wasted 
g: two 
g: hours 
g: with 
g: this 

第一個問題:我怎樣才能使查詢,所以我得到下面的結果嗎?

wasted 
two 
hours 
with 
this 

「浪費」,「二」,「小時」,「有」和「本」的文件(我相信你打電話給他們鑰匙?)有兩列和100行裏面。 「浪費」包含此:

Hash Key  Hash Value 
I    Myself 
Am   ToBe 
So   TooMuch 
Wasted  Wasted 

第二個問題:我如何做一個查詢來檢索所有鍵和值?

我通過複製數據得到了一個臨時解決方案。我創建了一個文件夾,在裏面插入了字符串(我相信你稱它們爲散列),然後我遍歷該文件夾/ set並逐個返回每個鍵。但對於生產,我們將不得不復制2TB的數據,而我們不能這樣做。

+0

請勿使用「KEYS」。鍵將遍歷數據庫中的* ALL *鍵,即使那些不以g:開頭的鍵。正如Itamar所說,使用SETS。 – 2016-05-06 00:37:51

回答

0

WRT問題1:您應該真正瞭解Redis的不同data structures,但從外觀上看,您並未使用Set,而只是設置具有通用前綴的鍵。使用一組,你將需要調用SADD,例如:

SADD g wasted two hours with this 

每個「文件」是其成員是一組,並呼籲它SMEMBERS將返回他們。

WRT問題2:假設您問如何從哈希中獲取所有字段及其各自的值,請使用HGETALL

+0

http://postimg.org/image/mcnbja4s7/。如果我做鑰匙*團體:*結果不滿足我。第一個結果是「Groups:TheRedGroup」,由於我只需要獲得TheRedGroup,唯一的(可怕的)解決方案似乎是在服務器中實時編輯每個字符串,並從每個組中取出「Groups:」。我所問的是如何在Redis查詢中僅檢索組名,而不訴諸創建「grouplist」文檔並複製每個組名。無論如何,感謝你的嘗試,也許我沒有解釋自己。 – noideawhattodo