【问题标题】:Redis search for matching keys that equal a valueRedis 搜索与值相等的匹配键
【发布时间】:2014-02-01 00:50:47
【问题描述】:

好的,在 REDIS 中,如果我只想设置键 = 通道名称 和价值 = 付费或免费...

所以最终我会列出 100、1000 等键和值的列表,其中 密钥的价值要么是付费的,要么是免费的。

     channelName, paid or free

那么,我想来找找 并要求 db 给我所有 value = free 的频道

设置这个的最佳方式/有效方式是什么?

我基本上想查询并返回一个列表,其中包含等于列表或字典中某个值的所有键...

【问题讨论】:

  • 我可能应该使用免费和付费作为密钥并以某种方式存储频道...哈希,设置嗯调查
  • 你没有设置这个。 Redis 是一个键值存储,专门用于检索与某个键关联的值。如果您希望能够查询多个字段,则需要不同的数据结构,例如关系或索引文档数据库。
  • 我的研究即将到来......锤子和螺丝......我想要一些轻量级的东西,托管/远程有任何建议
  • 这将几乎完全基于意见,并且仍然在很大程度上取决于您的用例的细节。

标签: caching redis key-value


【解决方案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"

【讨论】:

  • 谢谢!!我已经了解了排序集,现在你给了我一个很好的例子来扩展
猜你喜欢
  • 1970-01-01
  • 2019-12-08
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2019-03-04
  • 1970-01-01
  • 2015-09-16
相关资源
最近更新 更多