2017-02-27 87 views
1

請檢查下面的命令,如何推的Redis列表中的變量 - Redis的命令行

redis /tmp/redis.sock> set s1 String1 
OK 
redis /tmp/redis.sock> set s2 String2 
OK 
redis /tmp/redis.sock> set s3 String3 
OK 
redis /tmp/redis.sock> LPUSH list s1 s2 s3 
(integer) 3 
redis /tmp/redis.sock> LRANGE list 0 -1 
1) "s3" 
2) "s2" 
3) "s1" 
redis /tmp/redis.sock> 

當我試圖在Redis的列表推變量,該值被當做一個字符串。是否有任何解決方法將變量添加到列表中?

謝謝。

+0

's1','s2','s3'實際上是添加到Redis的密鑰。那是你要的嗎? – RaR

+0

@RaR我想要s1,s2和s3變量的值。 – sprabhakaran

+1

Redis-cli不直接支持變量。就像在任何瀏覽器的JavaScript控制檯。你的第一步將在push命令中設置3個redis鍵('s1','s2'和's3')和's1','s2'和's3'作爲獨立的字符串。除非你使用'Lua'腳本,否則你不能實現你想做的事情,我相信 – RaR

回答

1

Redis列表中的元素是字符串。您不能在它們之間嵌套數據結構或創建的引用。

1

如果你想使用的變量,你可以使用Lua腳本,

eval "redis.call('lpush', 'list', KEYS[1], KEYS[2], KEYS[3])" 3 String1 String2 String4 

參考this

> eval "s1 = 'String1'" 0 
> eval "s2 = 'String2'" 0 
> eval "s3 = 'String3'" 0 
> eval "redis.call('lpush', 'list', s1, s2, s3)" 0 

Redis的-CLI可能不允許創建全局變量s1s2s3。要獲得許可,請參閱此https://stackoverflow.com/a/19998708/6048928

+0

「sort list get *」這個命令也按我的預期工作。 – sprabhakaran