2014-01-31 106 views
0

OK,在Redis的,如果我只是想设置键=通道名称 和值=付费或免费的...Redis的搜索匹配等于值键

所以最终生病有一个列表100S ,1000s等等的密钥和值,其中钥匙的价值将被支付或免费。

 channelName, paid or free 

的话,那么我要来和搜索 ,并要求DB给我,其价值的所有通道=免费

最新最好的方式/ efficent的方式来设置呢?

我基本上要查询并返回所有在列表或字典等于某个值的键列表...

+0

我应该使用免费和付费的键和频道存储在一些还挺方式...哈希,设置嗯调查 – sirvon

+0

你不设置此。 Redis是一个键值存储器,专门用于检索与某个键相关联的值。如果您希望能够在多个字段上查询,则需要使用不同的数据结构,例如关系或索引文档数据库。 – chrylis

+0

我的研究即将到...锤子和螺丝...我想要一个轻量级的东西和托管/远程有任何建议 – sirvon

回答

1

您可以使用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" 
+0

谢谢!!我已经了解了排序集,现在你给了我一个很好的例子来扩展 – sirvon

+0

不客气=) – Niloct