我正在做一个类项目,我在Redis中设置了大约150,000个哈希,其中键是格式为"2008-08-29T15:09:06.493"
的时间戳,字段为Tag
和Title
。我想找到同一年同类标签的所有按键。
我正在使用KEYS *2008*
来获取年份2008
的所有哈希值,但我不确定如何检查哈希是否具有特定标记,并增加计数器。我怎么能这样做?
答案 0 :(得分:1)
所以,这里有三点:
您进行数据设置的方式对于您尝试执行的操作非常低效。您可以提出的问题(参见第3点),但如果您想以任何规律进行,我强烈建议以不同方式存储数据。例如,如果你想做大量的时间切片,那么关键是时间戳的有序集将是一个很好的方法。
永远不要在类似于生产环境的任何内容中使用KEYS *
。我知道这只适用于一个课程项目,但我真的建议不要使用KEYS *
来做任何事情,除了离线特别挖掘。
既然警告已经完成,那么有几种方法可以做到这一点。最简单的(但不是最有效的)只是通过Python之类的脚本语言使用Redis Py之类的东西连接到Redis服务器,使用HGETALL
为每个哈希抓取所有内容,然后过滤掉东西根据Python的需要。
如果您必须坚持使用Redis执行此操作,或者您希望在保留当前数据结构的同时提高查询效率,请使用Lua script。您可以让它运行KEYS 2008*
语句,然后过滤掉所有结果的标记,同时保持正在运行的计数器。在脚本结束时,您只需返回计数器。