gpt4 book ai didi

hash - 如何根据redis中的日期范围获取数据

转载 作者:IT王子 更新时间:2023-10-29 06:03:51 24 4
gpt4 key购买 nike

我在mysql中有一个日志数据

id |   value | date
1 | 10.2 | 2017-07-20 18:00:00
2 | 10.5 | 2017-07-20 18:00:01
3 | 10.3 | 2017-07-20 18:00:03

然后在redis中将其转化为hash dan sorted set。这是我的哈希:

hmset mylog:1 id 1 value 10.2 date 1388534400 
hmset mylog:2 id 2 value 10.5 date 1388534401
hmset mylog:3 id 3 value 10.3 date 1388534402

和排序集:

zadd log_date 1388534400 1
zadd log_date 1388534401 2
zadd log_date 1388534402 3

我想像 WHERE date beetween .... and .... 一样执行查询

是否有任何可能的方法根据排序集中的日期范围从哈希中获取数据?

谢谢!

最佳答案

有两种可能的方法。

  1. 将数据保存在哈希中,日期作为排序集中的 unix 时间戳,并使用 ZRANGE 查询排序集。获取 ID,然后查询具有这些 ID 的哈希值

  2. 如果您的 MySQL 行数据很简单,即具有原始值的 2-3 列,我会推荐另一种方法,是将数据本身存储为排序集中的键,日期是分数.

zadd log_date 1388534400 1_10.2

拆分 key 时元素的位置是固定的,因此 [0] 索引将为您提供 id1 index 会给你 value。这样,您的所有数据都将位于排序集中,您可以使用 ZRANGE(带有 WHITHSCORE 标志)查询数据,以获取所有数据以及提供的 unix 时间戳日期内的日期。这种方法是内存高效的,并且还使您免于将数据链接到两个点的问题,在这两个点中您必须添加或删除排序集中的数据以及散列。这里只需要排序集。

关于hash - 如何根据redis中的日期范围获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45342453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com