好的,在redis中,如果我只想设置keys=a channel name
和价值=支付或免费…
所以最终我会有一个100s,1000s等关键字和值的列表,其中
这把钥匙的价值是有偿的还是无偿的。

     channelName, paid or free

所以,我想来找
让分贝给我所有值为free的频道
最好的方法/最有效的方法是什么?
我基本上想查询并返回一个列表,其中列出了在列表或dict中等于某个值的所有键…

最佳答案

您可以使用sorted sets,并且成员值为0(免费)或1(付费)。
在一个键中,可以存储已排序集的成员,每个成员都有一个十进制值。将freepaid抽象为01值,您可以将成员(即,在您的情况下,通道)添加到集合中,然后查询这些值。

127.0.0.1:6379> ZADD mychannels 0 1stchannel 1 2ndchannel 1 3rdchannel 0 4thchannel
(integer) 4
127.0.0.1:6379> ZRANGEBYSCORE mychannels 0 0 /* Querying free channels */
1) "1stchannel"
2) "4thchannel"
127.0.0.1:6379> ZRANGEBYSCORE mychannels 1 1 /* Querying paid channels */
1) "2ndchannel"
2) "3rdchannel"

10-02 08:36
查看更多