簡體   English   中英

如何基於Redis中的日期范圍獲取數據

[英]how to get data based on date range in redis

我在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列),我建議的另一種方法是將數據本身作為鍵存儲在Sorted集中,日期為score

zadd log_date 1388534400 1_10.2

元素在拆分密鑰時的位置是固定的,因此[0]索引將為您提供id1索引將為您提供value 這樣,您的所有數據都將位於排序集中,並且您可以使用ZRANGE(帶有WITHSCORE標志)查詢數據,以獲取所有數據以及所提供的unix時間戳日期內的日期。 這種方法可提高內存效率,還可以避免將數據鏈接到兩點的麻煩,在這兩點中,您必須添加或刪除排序集中的數據以及散列。 在這里,僅需要排序集。

為此,首先對Sorted Set進行查詢以獲得日期范圍內的成員,然后獲取相關的哈希值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM