当前位置: 首页 > 面试题库 >

Redis数据结构设计,用于对基于时间的值进行排序

陈坚
2023-03-14
问题内容

我正在对数据流进行一些分析,并将结果发布在Redis通道上。消费者订阅这些频道并获得实时数据馈送。所有历史数据分析结果都将丢失。

现在,我想添加在Redis中存储历史数据的功能,以便消费者可以查询此历史数据(主要是按时间)。由于分析结果是按时间划分的,将结果存储在Redis中的最佳设计是什么?


问题答案:

使用redis 排序集。

排序集基于“分数”存储数据,因此,在您的情况下,只需使用毫秒为单位的时间戳即可;数据将自动排序,使您可以使用开始/结束日期范围来检索历史项,这是一个示例…

将项目添加到排序集中…

zadd historical <timestamp> <dataValue>

..添加一些示例数据。

 zadd historical 1 data1
 zadd historical 2 data2
 zadd historical 3 data3
 zadd historical 4 data4
 zadd historical 5 data5
 zadd historical 6 data6
 zadd historical 7 data7

..使用开始/结束范围检索项目的子集…

 zrangebyscore historical 2 5

..返回…

1) "data2"
2) "data3"
3) "data4"
4) "data5"

因此,如果您要检索最后一天的所有历史记录,只需执行此操作…

zrangebyscore historical <currentTimeInMillis - 86400000> <currentTimeInMillis>


 类似资料:
  • 我有一个名为“segments”的数据帧,看起来像这样: 我想让它看起来像这样。其中Outdegree是包含列A中的值的行数,例如10135在3行中,因此每行Outdegree设置为3: 以下是我正在尝试但不起作用的内容: 该代码将所有行相加,并将总计值提供给OUTDEGREE列

  • 所以基本上我要做的是,我已经在弹性搜索中插入了数据,添加了地理坐标,现在我需要做的是,能够运行一个查询,对我得到的结果进行排序,从最近到最远。 我想找到我所在州的所有商店,然后按离我当前位置最近的一家订购。 因此,给定一个名为“state”的字段和一个名为“point”的字段,这是一个数组,使用elastica保存long/lat,该查询是什么? 谢谢你能给我的任何帮助。

  • 栈和队列都很简单:接口相对固定,并且它们应用于比较特殊的情况。并不是所有数据结构都像它们一样简单;大多数数据结构支持更加多样化的操作。原则上,这将增大并行的可能性,但是也让对数据保护变得更加困难,因为要考虑对所有能访问到的部分。当为了并发访问对数据结构进行设计时,这一系列原有的操作,就变得越发重要,需要重点处理。 先来看看,在查询表的设计中,所遇到的一些问题。 6.3.1 编写一个使用锁的线程安全

  • 本章主要内容 并发数据结构设计的意义 指导如何设计 实现为并发设计的数据结构 在上一章中,我们对底层原子操作和内存模型有了详尽的了解。在本章中,我们将先将底层的东西放在一边(将会在第7章再次提及),来对数据结构做一些讨论。 数据结构的选择,对于程序来说,是其解决方案的重要组成部分,当然,并行程序也不例外。如果一种数据结构可以被多个线程所访问,其要不就是绝对不变的(其值不会发生变化,并且不需同步),

  • 我有一只这样的熊猫 我如何根据集合(例如)中的值对其进行排序 设置顺序=('1','3','2','4') 产量 谢谢

  • 问题内容: 如果我有几个股利: 我动态创建div: 如何才能使它们仅按顺序排序到已加载的div中,而不必重新加载所有div? 我认为我需要在屏幕上构建一个所有div的数据排序值的数组,然后查看新div的位置,但是我不确定这是否是最佳方法。 问题答案: 使用这个功能 您可以在添加新的div后立即调用此函数。 如果要在div中保留javascript事件,请不要像上面的示例一样使用html repla