2017-07-27 181 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