天天看點

Redis 5.0新功能介紹

Redis 5.0

Redis5.0版是Redis産品的重大版本釋出,我們先看一下它的最新特點:

  1. 新的流資料類型(Stream data type) https://redis.io/topics/streams-intro
  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 Stream

Redis stream本質上是個時序資料結構,具有如下特點:

  1. 每條記錄是結構化、可擴充的對
  2. 每條記錄在日志中有唯一辨別,辨別中包含了時間戳資訊,單調遞增
  3. 可以根據需要自動清理曆史記錄
  4. 儲存在記憶體中,支援持久化

底層是修改版的radix tree,每個node存儲了一個listpack。listpack是一塊連續的記憶體block,用于序列化msg entry及相關元資訊,如msg ID,使用了多種編碼,用于節省記憶體,是ziplist的更新版。如果XADD每次添加的對中的field是一樣的,那麼field不會重複存儲。

Redis 5.0新功能介紹

記憶體友好,對于簡單的十幾~幾十位元組的msg,100MB記憶體可以存儲數百萬個。listpack在記憶體和disk上的存儲結構是一樣的,是以stream資料在做RDB時效率非常高,0.3s,500w entries。

Redis Stream使用示範

Redis 5.0新功能介紹

釋出消息

Redis 5.0新功能介紹

讀取消息

Redis 5.0新功能介紹

阻塞讀取

Redis 5.0新功能介紹

釋出新消息

Redis 5.0新功能介紹

消息傳回

Redis 5.0新功能介紹

建立消費組

Redis 5.0新功能介紹

通過消費組讀取消息

Redis 5.0新功能介紹
Redis 5.0新功能介紹

Redis Stream使用場景

可用作時通信等,大資料分析,異地資料備份等

Redis 5.0新功能介紹

用戶端可以平滑擴充,提高處理能力

Redis 5.0新功能介紹

Zpop

Sorted Sets 增加了類似List的pop指令:

ZPOPMAX 指令用于移除并彈出有序集合中分值最大的 count 個元素

ZPOPMIN 指令用于移除并彈出有序集合中分值最小的 count 個元素

BZPOPMAX 和 BZPOPMIN 是上述兩個指令的阻塞變種.

Redis 5.0新功能介紹

CLIENT:

Client id傳回目前連接配接的ID,每個ID符合如下限制:

  1. 永不重複,可以判斷目前連結是否斷鍊過
  2. 單調遞增,可以判斷不同連結的接入順序

Client unblock:

當用戶端因為執行具有阻塞功能的指令(如BRPOP、XREAD或者WAIT)被阻塞時,該指令可以通過其他連接配接解除用戶端的阻塞

Redis 5.0新功能介紹

阿裡雲Redis 5.0優勢:

  1. 新增的stream資料結構,豐富的應用場景和想象空間
  2. 核心的改進和bugfix,使用更健壯
  3. 支援賬号體系,根據賬号用途賦予相應的權限,更加安全
  4. 審計日志,記錄了讀寫操作、敏感操作(keys、flushall等)、慢日志、管理類指令,供使用者查詢
  5. 大key分析,基于快照的完整記憶體分析,更準确,直接輸出記憶體消耗top排行的key
  6. 支援單機和叢集版的平滑遷移

繼續閱讀