我有一个排序集,它具有以下键名和值:

zrange bargraph:branch:1:category:2:product:4
1) "76"
2) "55"
3) "10"
4) "84"

redis 中是否有一种机制,我可以在使用 zrange 时使用通配符(也许是?)来获得相同的值?换句话说,redis 是否支持 zrange bargraph:branch:1:category:2?如果不是,如果我只知道类别 id(2) 而不是产品 id(4) 而不使用不同的排序集,我怎样才能最好地获得所有值?

最佳答案

正如您所提到的,KEYS 效率低下,因为引擎对键执行线性扫描。
不幸的是,没有您正在寻找的通配符解决方案

考虑对每个类别的产品 key 使用SET:
SADD bargraph:branch:1:category:2 1 2 3 4
要获取所有设置的类别成员,请执行以下操作:
SMEMBERS bargraph:branch:1:category:2
如果你不关心你的分数求和,或者每个排序集有不同的项目,你可以像这样对你的每个产品排序集进行联合:
ZUNIONSTORE bargraph:branch:1:category:2:product:all 4 bargraph:branch:1:category:2:product1 bargraph:branch:1:category:2:product2 bargraph:branch:1:category:2:product3 bargraph:branch:1:category:2:product4
现在你可以 zrange bargraph:branch:1:category:2:product:all
您管道上述操作以获得更好的性能

关于redis - 使用 Redis 排序集中的部分键名查找值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15673054/

10-15 09:14