技術乾貨 | 解鎖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-2887132/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis乾貨|解鎖Redis 時間序列資料的應用Redis
- 技術乾貨| MongoDB時間序列集合MongoDB
- 時間序列乾貨大全
- 將VAE用於時間序列:生成時間序列的合成資料
- 乾貨 | 知識圖譜的技術與應用
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- 【技術乾貨+限時活動】openstack原理及在華為雲中的應用
- 資料加密新技術-實時雲渲染技術應用加密
- 【技術乾貨】Oracle資料庫漏洞掃描指南Oracle資料庫
- 時間序列資料的處理
- [乾貨分享]1000篇乾貨好文!量子技術——資訊篇
- 乾貨分享|Bitset 應用詳解
- 應用時間序列法預測收入
- 乾貨!天翼雲DPU技術解碼
- 得物技術時間切片的實踐與應用
- 乾貨 | H.265技術在短影片的應用及未來前景
- 基於對比稀疏擾動技術的時間序列解釋框架 ContraLSP框架
- 技術乾貨 | 資料中介軟體如何與GreatSQL資料同步?SQL
- 金蝶雲星空解鎖時同時解鎖序列號
- 技術乾貨|如何利用 ChunJun 實現資料離線同步?
- 技術乾貨 | 阿里雲資料庫PostgreSQL 13大版本揭秘阿里資料庫SQL
- 技術乾貨:LeetCode1- 20題詳解LeetCode
- 資料經濟時代的信仰,區塊鏈技術的應用區塊鏈
- Redis_RDB持久化之寫時複製技術的應用Redis持久化
- 進階 Redis 技術與應用Redis
- 乾元通多卡聚合技術應用
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 大資料技術原理與應用大資料
- 大資料技術在電商的應用大資料
- 深度乾貨 | OceanBase 主動切主技術解讀
- Tensorflow 視窗時間序列資料的處理
- 重磅乾貨!2020版Python教程MySQL_SQL_Redis資料庫詳解PythonMySqlRedis資料庫
- 技術乾貨 | 反外掛技術的革新:如何有效應對 FPS 外掛的威脅
- [乾貨分享]1000篇乾貨好文!量子技術——進階篇
- 阿里技術精華乾貨整理阿里
- Redis 應用-分散式鎖Redis分散式
- 雲棲深度乾貨 | 打造“雲邊一體化”,時序時空資料庫TSDB技術原理深度解密資料庫解密
- 大資料建模、分析、挖掘技術應用大資料