2012-09-07 68 views
3

有沒有辦法在Redis中將一個函數的返回值傳遞給另一個函數?當然,如果你使用的是語言包裝器(比如Ruby),那很簡單 - 但是從CLI中怎麼樣?將結果傳遞給redis中的另一個命令

例如這樣的事情時,bash風格

redis 127.0.0.1:6379> keys student* | mget 

或像這樣

redis 127.0.0.1:6379> mget(keys student*) 

keys student*將返回鍵的列表,但我不知道如何獲取這些鍵的所有值。

想法?

回答

4

從CLI中,你只需讓shell執行它的工作。

./redis-cli --raw keys 'student:*' | awk '{printf "get %s\n", $1}' | ./redis-cli --raw 

請注意,由於其線性複雜性,您不應該在應用程序中使用keys命令。

+2

更簡單(當管道連接到另一個命令時,'--raw'是默認的):'redis-cli keys'student:*'| xargs redis-cli mget'。對於一元命令(如'type'),使用'redis-cli keys'學生:*'| xargs -n1 redis-cli type'。當然,'keys'命令是不鼓勵的,如果你有例如所有鍵的集合都會被'sort'命令減少,這應該會產生更好的性能。 –

+1

xargs很不錯,但xargs -n1會在每個輸入行分叉一個進程,而redis-cli中的管道則不會。 –

+0

的確,這應該會有很大的不同!謝謝你的提示。 –

相關問題