[英]How can I find and add key / value data to hashes in Redis based on a key / value inside the hash?
[英]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 ....
有沒有可能根據排序集中的日期范圍從哈希中獲取數據?
謝謝!
有兩種方法。
將數據保留在哈希中,將日期作為unix時間戳記在排序集中,並使用ZRANGE查詢排序后的集合以獲取ID,然后使用這些ID查詢哈希
如果您的MySQL行數據很簡單(即帶有原始值的2-3列),我建議的另一種方法是將數據本身作為鍵存儲在Sorted集中,日期為score 。
zadd log_date 1388534400 1_10.2
元素在拆分密鑰時的位置是固定的,因此[0]索引將為您提供id
, 1索引將為您提供value
。 這樣,您的所有數據都將位於排序集中,並且您可以使用ZRANGE(帶有WITHSCORE標志)查詢數據,以獲取所有數據以及所提供的unix時間戳日期內的日期。 這種方法可提高內存效率,還可以避免將數據鏈接到兩點的麻煩,在這兩點中,您必須添加或刪除排序集中的數據以及散列。 在這里,僅需要排序集。
為此,首先對Sorted Set進行查詢以獲得日期范圍內的成員,然后獲取相關的哈希值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.