Redis - 计算哈希中共享特定值的密钥数量

时间:2014-04-19 22:09:09

标签: redis

我正在做一个类项目,我在Redis中设置了大约150,000个哈希,其中键是格式为"2008-08-29T15:09:06.493"的时间戳,字段为TagTitle。我想找到同一年同类标签的所有按键。

我正在使用KEYS *2008*来获取年份2008的所有哈希值,但我不确定如何检查哈希是否具有特定标记,并增加计数器。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

所以,这里有三点:

  1. 您进行数据设置的方式对于您尝试执行的操作非常低效。您可以提出的问题(参见第3点),但如果您想以任何规律进行,我强烈建议以不同方式存储数据。例如,如果你想做大量的时间切片,那么关键是时间戳的有序集将是一个很好的方法。

  2. 永远不要在类似于生产环境的任何内容中使用KEYS *。我知道这只适用于一个课程项目,但我真的建议不要使用KEYS *来做任何事情,除了离线特别挖掘。

  3. 既然警告已经完成,那么有几种方法可以做到这一点。最简单的(但不是最有效的)只是通过Python之类的脚本语言使用Redis Py之类的东西连接到Redis服务器,使用HGETALL为每个哈希抓取所有内容,然后过滤掉东西根据Python的需要。

  4. 如果您必须坚持使用Redis执行此操作,或者您希望在保留当前数据结构的同时提高查询效率,请使用Lua script。您可以让它运行KEYS 2008*语句,然后过滤掉所有结果的标记,同时保持正在运行的计数器。在脚本结束时,您只需返回计数器。