[英]Redis - Counting how many Keys share a certain value in a hash
我正在做一个课堂项目,我为Redis设置了大约150,000个哈希,其中的键是格式为"2008-08-29T15:09:06.493"
时间戳,字段为Tag
和Title
。 我想找到同一年所有带有类似标签的钥匙。
我在做KEYS *2008*
获得与一年所有哈希值2008
,但我不知道我怎么会检查是否有散列特定标签,并递增计数器。 我该怎么做呢?
因此,这里有三点:
数据设置的方式对于您要执行的操作非常低效。 您的要求可以完成(请参见第3点),但是如果您想以任何规律性进行操作,我强烈建议您以不同的方式存储数据。 例如,如果您要进行大量时间切片,则以键为时间戳的排序集是一个不错的选择。
绝对不要在类似于生产环境的任何环境中使用KEYS *
。 我知道这只是一个班级项目,但我真的建议您摆脱使用KEYS *
进行除离线即席挖掘之外的任何事情的习惯。
现在警告已不复存在,您可以通过几种方法来执行此操作。 最简单(但不是最有效)的方法是,使用Redis Py之类的脚本语言通过Python之类的脚本语言连接到Redis服务器,对每个哈希使用HGETALL
来抓取所有内容,然后根据需要在Python中过滤掉它们。
如果您必须坚持使用Redis来执行此操作,或者希望在保留当前数据结构的同时提高查询效率,请使用Lua脚本 。 您可以让它运行KEYS 2008*
语句,然后在保持运行计数器KEYS 2008*
过滤所有结果的标记。 在脚本末尾,您只需返回计数器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.