2017-02-27 66 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