如何在redis列表中推送变量 - redis命令行

时间:2017-02-27 11:03:49

标签: 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列表中推送变量时,该值被视为字符串。是否有将变量添加到列表的解决方法?

感谢。

2 个答案:

答案 0 :(得分:2)

Redis列表中的元素是字符串。您不能嵌套数据结构或在它们之间创建引用。

答案 1 :(得分: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