2017-07-27 114 views
0

如何将数据我有一个日志数据在mysql中根据日期范围Redis的

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的设置。 这是我的哈希值:

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

为此,首先在Sorted Set上执行查询以获取日期范围内的成员,然后获取相关的Hashes。

0

有两种可能的方式。

  1. 使用ZRANGE得到的ID数据保存在哈希表,日期为有序集合Unix时间戳,以及查询有序集合,然后用这些ID

  2. 另一种方法,我建议,如果查询的散列你的MySQL行数据是简单的,即2-3列与原始值,是将数据本身存储在Sorted集合中的一个关键字,日期是得分

zadd log_date 1388534400 1_10.2

的元素对你的分裂键,因此固定[0]索引会给你的位置id1指数会给你的value。 这样你所有的数据都会存在于有序集合中,并且你可以使用ZRANGE(带有WITHSCORE标志)来查询数据以获取所有数据以及提供的unix时间戳日期内的日期。这种方法具有内存效率,并且还可以将数据链接问题从两个方面解决,即您必须添加或删除已排序集中的数据以及哈希。这里只需要有序集合。

+0

我知道这是一个完全不同的问题,但就性能而言,这比查询db更好吗?当你有成千上万的记录时会发生什么? – marman