12.05 Redis5.0新特性

Redis 5主要專注於幾個重要功能。相比之下Redis 4非常非常專注於操作類型,Redis 5的變化大多是面向用戶的。即在現有的基礎上增加新的數據類型和操作類型。以下是此版本的主要功能:

  1. 新的流數據類型(Stream data type)
  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 命令
  15. 在不存在需要保持向後兼容性的地方,棄用 "slave" 術語
  16. 網絡層中的差異優化
  17. Lua 相關的改進
  18. 引入動態的 HZ(Dynamic HZ) 以平衡空閒 CPU 使用率和響應性
  19. 對 Redis 核心代碼進行了重構並在許多方面進行了改進

重量級特性——Stream

Redis Stream本質上是個時序數據結構,具有如下特點:

1.每條記錄是結構化、可擴展的對
2.每條記錄在日誌中有唯一標識,標識中包含了時間戳信息,單調遞增
3.可以根據需要自動清理歷史記錄
4.保存在內存中,支持持久化
底層是修改版的radix tree,每個node存儲了一個listpack。listpack是一塊連續的內存block,用於序列化msg entry及相關元信息,如msg ID,使用了多種編碼,用於節省內存,是ziplist的升級版。如果XADD每次添加的對中的field是一樣的,那麼field不會重複存儲。

Redis5.0新特性

內存友好,對於簡單的十幾~幾十字節的msg,100MB內存可以存儲數百萬個。listpack在內存和disk上的存儲結構是一樣的,所以stream數據在做RDB時效率非常高,0.3s,500w entries。

Redis Stream使用演示

Redis5.0新特性

Redis Stream使用場景

可用作時通信等,大數據分析,異地數據備份

Redis5.0新特性

客戶端可以平滑擴展,提高處理能力

Redis5.0新特性

感謝這個版本的相關用戶和開發者。

開發組接下來會發布更多的RC版本,直到已經完全沒問題。開發組時沒有收到有關嚴重問題的報告。

從4.0版本遷移到5.0版本的注意事項:

Redis 4.0大多是5.0的嚴格子集,應用程序從4.0升級到5.0通常不會碰見問題。 以下是5.0版本中引入的非後向兼容更改:

  • redis-cli現在實現了集群管理工具。 我們仍然在維護舊的redis-trib,但是新的修復只會在redis-cli中實現。有關更多信息,請參閱`redis-cli —cluster help`。
  • RDB格式已更改。 Redis 5.0能夠讀取4.0(和所有的過去的版本)文件,反之則不能。
  • 某些日誌格式和語句在Redis 5.0中不同。

阿里雲Redis 5.0優勢

新增的stream數據結構,豐富的應用場景和想象空間
內核的改進和bugfix,使用更健壯
支持賬號體系,根據賬號用途賦予相應的權限,更加安全


審計日誌,記錄了讀寫操作、敏感操作(keys、flushall等)、慢日誌、管理類命令,供用戶查詢
大key分析,基於快照的完整內存分析,更準確,直接輸出內存消耗top排行的key
支持單機和集群版的平滑遷移


分享到:


相關文章: