Redis5.0 新功能簡介

Redis 5主要專一於幾個重要功能。相比之下Redis 4很是很是專一於操做類型,Redis 5的變化大可能是面向用戶的。即在現有的基礎上增長新的數據類型和操做類型。如下是此版本的主要功能:node

Redis 5.0

1.新的流數據類型(Stream data type) https://redis.io/topics/strea...
2.新的 Redis 模塊 API:定時器、集羣和字典 API(Timers, Cluster and Dictionary APIs)
3.RDB 增長 LFU 和 LRU 信息
4.集羣管理器從 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 語言代碼
5.新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞變體(blocking variants)
6.升級 Active defragmentation 至 v2 版本
7.加強 HyperLogLog 的實現
8.更好的內存統計報告
9.許多包含子命令的命令如今都有一個 HELP 子命令
10.客戶端頻繁鏈接和斷開鏈接時,性能表現更好
11.許多錯誤修復和其餘方面的改進
12.升級 Jemalloc 至 5.1 版本
13.引入 CLIENT UNBLOCK 和 CLIENT ID
14.新增 LOLWUT 命令 http://antirez.com/news/123
15.在不存在須要保持向後兼容性的地方,棄用 "slave" 術語
16.網絡層中的差別優化
17.Lua 相關的改進
18.引入動態的 HZ(Dynamic HZ) 以平衡空閒 CPU 使用率和響應性
19.對 Redis 核心代碼進行了重構並在許多方面進行了改進redis

Redis Stream

Redis stream本質上是個時序數據結構,具備以下特色:安全

每條記錄是結構化、可擴展的對
每條記錄在日誌中有惟一標識,標識中包含了時間戳信息,單調遞增
能夠根據須要自動清理歷史記錄
保存在內存中,支持持久化

底層是修改版的radix tree,每一個node存儲了一個listpack。listpack是一塊連續的內存block,用於序列化msg entry及相關元信息,如msg ID,使用了多種編碼,用於節省內存,是ziplist的升級版。若是XADD每次添加的對中的field是同樣的,那麼field不會重複存儲。網絡

Redis Stream使用演示

圖片描述

Redis Stream使用場景

可用做時通訊等,大數據分析,異地數據備份等
圖片描述數據結構

客戶端能夠平滑擴展,提升處理能力
圖片描述性能

Zpop

Sorted Sets 增長了相似List的pop命令:
ZPOPMAX 命令用於移除並彈出有序集合中分值最大的 count 個元素
ZPOPMIN 命令用於移除並彈出有序集合中分值最小的 count 個元素
BZPOPMAX 和 BZPOPMIN 是上述兩個命令的阻塞變種.大數據

圖片描述

CLIENT:

Client id返回當前鏈接的ID,每一個ID符合以下約束:優化

永不重複,能夠判斷當前連接是否斷鏈過
單調遞增,能夠判斷不一樣連接的接入順序

Client unblock:
當客戶端由於執行具備阻塞功能的命令(如BRPOP、XREAD或者WAIT)被阻塞時,該命令能夠經過其餘鏈接解除客戶端的阻塞編碼

圖片描述

Redis 5.0優點:

新增的stream數據結構,豐富的應用場景和想象空間 內核的改進和bugfix,使用更健壯
支持帳號體系,根據帳號用途賦予相應的權限,更加安全
審計日誌,記錄了讀寫操做、敏感操做(keys、flushall等)、慢日誌、管理類命令,供用戶查詢
大key分析,基於快照的完整內存分析,更準確,直接輸出內存消耗top排行的key 支持單機和集羣版的平滑遷移

官方原文:https://redis.io/topics/strea...spa

相關文章
相關標籤/搜索