【发布时间】:2021-04-25 02:09:28
【问题描述】:
Redis n00b 在这里,所以不要开枪!
我需要在 redis 中存储一组按键索引的集合 - 我可以:
import redis
r = redis.Redis()
r.sadd("A:B:123", *{456, 789})
r.sadd("A:B:124", *{666, 777})
但是如果我想要集合“A:B”,我必须手动收集密钥,如下所示:
{k.rsplit(b':', 1)[-1]: r.smembers(k) for k in r.scan_iter("A:B:*") }
# {b'124': {b'666', b'777'}, b'123': {b'456', b'789'}}
这似乎非常慢(还要注意 rsplit)
我一直在尝试使用 hmset 来解决问题:
r.hmset("A:B", mapping={123: 'X', 124: 'Z'})
但我找不到用我的集合替换“X”和“Z”的方法。
(请注意,理想情况下,set 元素应该是传入的 int 类型 - 另请注意,这些集合是只读的,所以我想优化查找而不是插入时间)
【问题讨论】: