Redis乾貨|解鎖Redis 時間序列資料的應用
什麼是時間序列資料(Time Series Data,TSD,以下簡稱時序)從定義上來說,就是一串按時間維度索引的資料。簡單的說,就是這類資料描述了某個被測量的主體在一個時間範圍內的每個時間點上的測量值。它普遍存在於IT基礎設施、運維監控系統和物聯網中。
對時序資料進行建模的話,會包含三個重要部分,分別是:主體,時間點和測量值。時序資料從時間維度上將孤立的觀測值連成一條線,從而揭示軟硬體系統的狀態變化。孤立的觀測值不能叫時序資料,但如果把大量的觀測值用時間線串起來,我們就可以研究和分析觀測值的趨勢及規律。
二、時序資料特徵
資料寫入:資料持續高速生成,持續高併發寫入,資料點一旦插入資料庫,就不會發生更改,可設定過期時間。
非結構化標籤:時序資料通常是由許多來源在很長一段時間內連續產生的。例如,在IoT用例中,每個感測器都是時序資料的來源。在這種情況下,序列中的每個資料點都將源資訊和其他感測器測量結果儲存為標籤。來自每個來源的資料標籤可能不符合相同的結構或順序。
資料價值遞減:將來只有適當時間範圍內的彙總資料摘要才有意義,存在明顯的冷熱資料,一般只會頻繁查詢近期資料。
三、Redis 時序資料方案
Redis是現在最受歡迎的NoSQL資料庫之一,redis 內建了多種常用資料結構,適用於多種應用場景:快取、佇列、分散式鎖、排行榜等等。除此之外redis 還可以自定義擴充套件模組引入更多資料結構, 比如引入RediSearch 模組用於redis 支援全文檢索( 瞭解更多有用的模組可訪問 )。以下主要講述redis在時序資料儲存的應用方案:
3.1 使用 Sorted Set 儲存
SortedSets 是redis 內建的資料結構,跟set相比支援按權重值儲存資料,支援權重的範圍查詢。時序資料的場景下,可將資料時間戳作為權重值儲存,key儲存具體的度量維度。
3.2 使用 Stream 儲存
Redis Stream 是 Redis 5.0 版本新增加的資料結構,使用 Rax(Radix樹的單獨實現)實現,與 Sorted Sets 相比,Redis Streams 增強了插入和讀取的效能。但 Stream 主要用於訊息佇列,仍然缺少了特定於時間序列的聚合工具。
3.3 使用 RedisTimeSeries 儲存
3.3.1 模組安裝
|
步驟3:檢視 timeseries 模組是否安裝成功
|
(1)解決make的版本低不能使用,升級make
|
3.3.2 主要命令
1、 TS.CREATE : 建立一個時序資料集合
|
示例命令:
|
2、 TS.ADD :給某個key 新增時序資料,如果不存在則會建立集合
命令格式:
|
|
3、 TS. M ADD :給某個key 批次新增 資料
|
|
4、 TS.DEL : 刪除某個key 某個時間範圍的樣本資料
命令格式:
|
示例命令:
|
5、 TS.CREA T ERULE : 建立 資料 壓縮規則
命令格式:
|
6、 TS.DELETERULE : 刪除壓縮規則
|
7、 TS.RANGE : 範圍查詢,可配合聚合函式使用, 需要指定key
命令格式:
|
示例命令:
|
8、 TS.GET : 獲取 指定key的 最 新一條資料
TS.GET key |
複雜度:
TS.GET 複雜度為 O(1)
示例命令:
127.0.0.1:6379> TS.GET temperature:2:32 1) (integer) 1548149279 2) "23" |
9、TS.MGET:獲取與特定過濾器匹配的所有key的最新一條資料。
TS.MGET [WITHLABELS | SELECTED_LABELS label1 ..] FILTER filter... |
示例命令:
|
3.3.3客戶端庫
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
優點 :
1、 快速提取資料: 作為一個記憶體資料庫,RedisTimeSeries每秒可以在標準節點上提取超過500,000條記錄。測試表明,使用16個Redis分片叢集,每秒可以攝取超過1150萬條記錄。
3、資源效率: 支援定期取樣資料,寫入另外的集合,方便分粒度儲存資料。例如,如果一天收集了超過十億個資料點,則可以每分鐘彙總一次資料以便對資料進行下采樣,從而將資料集的大小減小為24 * 60 = 1,440個資料點。
缺點:
3.3.4選型建議
目前市面上也有一些專門的時序資料庫,如influxDB,不過influxDB 叢集版是收費的,單機版計算能力受限。如不想引入額外的架構,透過Redis RedisTimeSeries 擴充套件模組可以用來儲存最近一段熱點資料,歷史資料可考慮壓縮取樣以更大時間粒度儲存資料,亦可以搭配其他資料庫儲存原始資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2856568/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 技術乾貨 | 解鎖Redis 時間序列資料的應用Redis
- 時間序列乾貨大全
- 技術乾貨| MongoDB時間序列集合MongoDB
- Redis 應用-分散式鎖Redis分散式
- 將VAE用於時間序列:生成時間序列的合成資料
- Redis Stack:基於Redis的搜尋、文件、圖形和時間序列功能Redis
- Redis詳解以及Redis的應用場景Redis
- 重磅乾貨!2020版Python教程MySQL_SQL_Redis資料庫詳解PythonMySqlRedis資料庫
- 天翼雲分散式快取服務(Redis)的應用場景(乾貨)分散式快取Redis
- Redis Redisson 分散式鎖的應用和原始碼Redis分散式原始碼
- redis各資料型別應用概述Redis資料型別
- Redis的資料結構及應用場景Redis資料結構
- Redis的資料結構與應用場景Redis資料結構
- 時間序列資料的處理
- 乾貨分享|Bitset 應用詳解
- redis資料型別及應用場景Redis資料型別
- redis應用Redis
- Redis 資料持久化方案的介紹及應用Redis持久化
- redis 過期時間Redis
- 虹科乾貨 | Redis企業版—比Redis開源更好用!Redis
- Redis 知多少 (二)---Redis 基本資料型別及常用應用場景Redis資料型別
- 應用時間序列法預測收入
- 乾貨技巧|關於Redis的16個使用技巧Redis
- 【Azure Redis】部署在AKS中的應用連線Redis時候出現Unable to connect to Redis serverRedisServer
- 月半談(一)redis-分散式鎖與應用Redis分散式
- 詳解Redis分散式鎖Redis分散式
- Redis五種資料型別應用場景Redis資料型別
- Redis資料結構詳解(2)-redis中的字典dictRedis資料結構
- Redis 地理空間(geospatial)介紹及應用Redis
- redis的五種資料型別及應用場景Redis資料型別
- 金蝶雲星空解鎖時同時解鎖序列號
- Redis 應用-GeoRedis
- Redis 應用-限流Redis
- Redis實戰解讀-初識Redis&Redis基本資料型別Redis資料型別
- Redis應用(二) --分散式鎖以及壓測介紹Redis分散式
- 【Redis】 redis資料遷移Redis
- Redis 分散式鎖解決方案Redis分散式
- Redis分散式鎖解決方案Redis分散式