Py学习  »  Redis

如何在Redis中烧结哈希的集合和密钥?

Oleg Yablokov • 2 年前 • 399 次点击  

假设我有一个集合和一个散列:

SADD a 1 2 3
HSET b 1 "value1" 2 "value2"

现在我想得到集合之间的交点 a 还有散列的键 b .有可能在Redis中这样做吗?

以下情况不起作用:

SINTER a b  # (error) WRONGTYPE Operation against a key holding the wrong kind of value
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128066
 
399 次点击  
文章 [ 1 ]  |  最新文章 2 年前
for_stack
Reply   •   1 楼
for_stack    2 年前

到目前为止,您只能通过Lua脚本实现:

eval 'local res = {}; for i, v in ipairs(redis.call("smembers", KEYS[1])) do if redis.call("hexists", KEYS[2], v) > 0 then res[#res + 1] = v end end return res' 2 set-key hash-key

更紧凑的解决方案是使用 SORT 命令但是到目前为止,, 分类 命令不支持将“*”作为字段名的全局样式GET模式。我创造了一个 feature request 为了它。