2014-07-21 67 views
0

我已經將列表保存到散列,但無法弄清楚如何檢索散列的內容。首先,這裏是一些代碼來創建列表:查看列表保存到redis散列

127.0.0.1:6379> LPUSH list1 'dc:39:79:ab:cd:ef' (integer) 1 127.0.0.1:6379> LPUSH list1 '2014-07-21' (integer) 2 127.0.0.1:6379> LPUSH list1 'Success' (integer) 3 127.0.0.1:6379> LPUSH list1 'Miscellaneous notes about the install. Can be as long as you want' (integer) 4

現在我創建一個散列和一個鍵的值賦給列表1:

127.0.0.1:6379> hset hash 'RKT1234' list1 (integer) 1

我如何能打印整列表保存在哈希['RKT1234']?

127.0.0.1:6379> hgetall hash 1) "RKT1234" 2) "list1"

127.0.0.1:6379> hvals hash 1) "list1"

感謝

回答

1

它看起來像你正試圖存儲列表中的哈希值。由於Redis不支持嵌套數據結構,因此您沒有按照自己的想法進行操作。在hset hash 'RKT1234' list1中,您不存儲該列表,只是一個字符串名稱:「list1」。

爲了獲得列表的內容,您需要首先從哈希中獲取列表的名稱,然後在第二次調用中獲取列表的內容。

所以你的順序是這樣的:

# returns "list1" 
hvals hash 
lrange list1 0 -1 
# returns the contents of list1 

乾杯

+0

你好真鈔, – linuxfan

+0

感謝(中)與嵌套數據結構的工作能力有關Redis的答覆和澄清。我沒有看到你發佈的代碼片段如何提供幫助。 我們可以將 ** hvals hash **返回的名稱保存到變量中,然後再調用** Lrange **嗎?顯然,我不想硬編碼** lrange **將被調用的列表名稱。 謝謝 – linuxfan

+0

是的,這正是你如何去做的。因爲您沒有發佈您正在使用的語言,所以我無法知道並以這種方式展示它,所以我堅持使用它們時的redis-cli命令。 :) –