Redis ZRANGEBYSCORE返回空集

Redis ZRANGEBYSCORE返回空集,redis,Redis,这可能有点愚蠢 在redis控制台中执行此操作 zincrby model 1 20140101 zincrby model 1 20141010 zincrby model 1 20141010 为什么这样做有效 zrangebyscore model 00000000 99999999 withscores 1) "20140101" 2) "1" 3) "20141010" 4) "2" 但事实并非如此 zrangebyscore model 20140000 20149999 wit

这可能有点愚蠢

在redis控制台中执行此操作

zincrby model 1 20140101
zincrby model 1 20141010
zincrby model 1 20141010
为什么这样做有效

zrangebyscore model 00000000 99999999 withscores
1) "20140101"
2) "1"
3) "20141010"
4) "2"
但事实并非如此

zrangebyscore model 20140000 20149999 withscores

#> (empty list or set)

ZRANGEBYSCORE用于分数范围查找,您使用的是您的成员(在第3段中)。自1月2日起 获得约会的点击率:

ZSCORE <model>:daily <date timestamp at 12AM UTC>
ZSCORE:每日
注:

  • 你不能用这种方法轻松地确定日期范围,因为你的分数保持计数。您基本上需要执行多个zscore(O(log(N)),循环遍历范围内的每个日期
  • 您可以保持额外的滚动或静态聚合,以加快通常访问的范围
  • 您必须手动“终止”较旧的集合成员以进行内务管理
  • 允许范围的另一种方法是将以下内容设置到位:

    Sorted set key name pattern: <model>:daily
                                   |
                                   +- Member value: <day timestamp at 12AM UTC>:<count>
                                   +- Member score: 0
    
    排序设置键名模式::每日
    |
    +-成员值::
    +-会员分数:0
    

    在这里,您可以使用ZRANGEBYLEX获取一系列日期,但由于时间戳和计数是串联的,因此您必须在客户端或使用Lua进行一些处理,以获取计数(ZSCORE将始终返回0)或增加计数(您不能再使用ZINCRBY)。

    对于时间序列数据使用redis排序集,使用(如果我错了,请纠正我)时间戳作为分数不是更好吗?我在任何地方都读到过,人们推荐使用ZRANGEBYSCORE并在需要的时间范围内检索数据。这里有些东西对我来说是向后的…排序集中的每个元素都有两个属性-一个唯一的成员值和一个分数。Timeseries通常使用分数来保持时间戳(历元),并且成员就是被钉住的对象(通常,成员是由以下内容构建的:使其唯一)。您所做的是使用时间戳作为成员,并且分数递增。这意味着您正在使用的ZSET正在为时间戳保留分数(1,2,…)-如果您尝试解释您正在尝试做什么,可能会更好:)基本上是应用程序中每个模型的分析。我想统计每个模型id的访问/事件,并能够在每个日期获取该数据。因此,这里()我被建议使用排序集,正如在其他地方所建议的那样,但似乎只有当当前日期的计数将使用不同的计数器时才有用,然后每天使用ZADD,总计数作为成员,时间作为分数。您建议如何实施此功能?谢谢!排序集方法是否更倾向于使用具有年度键和365个值(每天)的散列,这样我就可以为计数器HINCRBY,而要在范围之间获取数据,我可以执行HMGET(也是O(N),但我可以通过服务器端生成日期范围一次性完成)。根据它的大小大致相同(别担心,我是redislabs的,因为你是garantia;)一点也不担心,而且在任何情况下都会有所帮助:)散列可能在RAM方面更有效,但在使用计数分数时使用排序集,您将立即获得top-k功能。在一天结束的时候,一切都是关于你想做什么。。。
    ZSCORE <model>:daily <date timestamp at 12AM UTC>
    
    Sorted set key name pattern: <model>:daily
                                   |
                                   +- Member value: <day timestamp at 12AM UTC>:<count>
                                   +- Member score: 0