- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试生成一个 Lua 脚本,该脚本接受一个集合的成员(每个成员也代表一个集合)并返回并集。这是这 3 组的具体示例:
smembers u:1:skt:n1
1) "s2"
2) "s3"
3) "s1"
smembers u:1:skt:n2
1) "s4"
2) "s5"
3) "s6"
smembers u:1:skts
1) "u:1:skt:n1"
2) "u:1:skt:n2"
所以集合 u:1:skts
包含其他 2 个集合的引用,我 想要生成 u:1:skt:n1
和 u:1:skt:n2
的联合,如下所示:
1) "s1"
2) "s2"
3) "s3"
4) "s4"
5) "s5"
6) "s6"
这是我目前所拥有的:
local indexes = redis.call("smembers", KEYS[1])
return redis.call("sunion", indexes)
但是我得到以下错误:
(error) ERR Error running script (call to f_c4d338bdf036fbb9f77e5ea42880dc185d57ede4):
@user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers
它似乎不喜欢将 indexes
变量作为 sunion
命令的输入。有什么想法吗?
最佳答案
不要这样做,否则您将无法迁移到集群。这是来自 documentation :
All Redis commands must be analyzed before execution to determine which keys the command will operate on. In order for this to be true for EVAL, keys must be passed explicitly. This is useful in many ways, but especially to make sure Redis Cluster can forward your request to the appropriate cluster node.
Note this rule is not enforced in order to provide the user with opportunities to abuse the Redis single instance configuration, at the cost of writing scripts not compatible with Redis Cluster.
如果您仍然决定违反规则,请使用 Lua 的 unpack
:
local indexes = redis.call("smembers", KEYS[1])
return redis.call("sunion", unpack(indexes))
关于lua - 如何在 Lua 脚本中使用 SMEMBERS 的结果作为 SUNION 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43234084/
我正在尝试使用 Redis 和 PHP 进行一些操作,但在使用 SETS 和 SMEMBERS 时遇到了问题。 我正在使用 Symfony2 和 SncRedisBundle。 $redis->mul
我是redigo从 Go 连接到 redis 数据库。 如何将 []interface {}{[]byte{} []byte{}} 类型转换为一组字符串?在这种情况下,我会喜欢获取两个字符串 Hell
根据 Redis 文档,SMEMBERS通过某个键返回整个集合。而另一个命令 - SCARD - 返回集合的基数(大小)。 在我的例子中,SMEMBERS 为某个键返回 22899 个元素的集合,而
Redis下的SCAN文档,它提到了关于 SMEMBERS 的内容: However while blocking commands like SMEMBERS are able to provide
我想知道是否有可能用 node_redis 实现对 redis 成员的同步检索. _.each(seeds, function(subseed, key, list){ client.smem
我是 Redis 的新手,我尝试为属于 sadd 的特定值显示一个排序集。有没有办法在 Redis 中执行此操作? SADD friends "Sarah" SADD friends "Lisa" S
我目前正在为后端开发一个聊天应用程序。在这里,一旦我们执行 /chat,我们就会看到我们的 friend 列表,我们可以从中开始与任何人对话。为了显示列表对于 friend ,我使用了 smember
我正在使用 redis-py (python redis 库)在我的代码中,并希望直接在 MGET 命令中使用 SMEMBERS 命令输出的字符串。我想在将所有成员拉入我的 python 程序,然后使
有了keys的列表,我尝试从redis中获取所有values,如下所示 async.mapSeries(['offer','find'],function (seed) { client.s
我有一个很大的 redis 集合(超过 600 万个条目),我需要遍历所有条目并对每个条目进行一些其他的 redis 操作(主要是使用基于原始键的键在 redis 排序集中调用 ZCARD输入)。 遍
不确定我是否发现了错误或 multi 不支持读/写。我无法解释为什么会发生这种情况? 多个SMOVE myset1 myset2 mykey成员 myset2执行 好的,+已排队,已排队,1、0 SI
下面的函数从 smembers 中删除键,它们不是通过 eval 参数传递的,在 redis 集群中是否合适? def ClearLock(): key = 'Server:' + str(l
我是 Redis 新手。例如,如果我有以下架构: INCR id:product SET product: value SADD color:red (另外:我不确定如何在 Redis 中表达变量。
我正在使用 Redis 构建一个 Rails 购物车应用程序。一切正常,直到我尝试查看我的购物车,此时我收到此错误。 NoMethodError in CartsController#show und
我正在尝试生成一个 Lua 脚本,该脚本接受一个集合的成员(每个成员也代表一个集合)并返回并集。这是这 3 组的具体示例: smembers u:1:skt:n1 1) "s2" 2) "s3" 3)
我是一名优秀的程序员,十分优秀!