redis5.0總共增加了12項新特性,如下:
1.新增加的Stream(流)數據類型,這樣redis就有了6大數據類型,另外五種是String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set有序集合)。它彌補了其它5種數據類型不能實現的功能,比如List數據類型只能先進先出,或者后進先出,不能從中間去數據,但是Stream可以實現。
1)創建Stream
命令:XADD
用法:XADD key ID field string (id可以自定義)
實例
127.0.0.1:6379> XADD key1 * month month_value #*代表默認id "1563893367304-0" #返回值說明:前面是UNIX毫秒時間戳 后面是序列號 127.0.0.1:6379> XADD key2 0-1 car car_value #自定義ID為 0-1 "0-1"
2) 查看Stream長度
命令:XLEN 返回stream中元素的個數
用法:XLEN key
127.0.0.1:6379> XLEN key1 (integer) 1
Stream 詳情介紹 : http://www.redis.cn/topics/streams-intro.html
2.新的Redis模塊api : Times and Cluster api,是一個抽象的集群消息總線,用於方便開發分布式系統。
3.RDB(redis datebase)現在用於存儲 LFU(最近最少使用淘汰算法) 和 LRU(最近不經常使用淘汰算法)元數據信息。
4.集群管理器從ruby(redis-trib.rb)移植到c代碼。以前創建集群時候需要通過ruby腳本來創建,現在用c代碼重新編寫,不用在額外按照ruby了。
5.新增加有序集合的sorted set4個命令:ZPOPMIN ,ZPOPMAX和它們的阻塞變種。
6.主動內存碎片整理功能version2版本,依賴於Jemalloc內存分配器。
7.增強HyperLogLog實現,這個功能是估算集合基數,redis5優化這個算法來節省空間。
8.更好的內存統計報告(碎片整理和內存報告)。
當我們在redis里存一個key時候,redis會給這個key分配一個存儲空間,但是當把這個key刪了,redis是不會立即回收這個已經刪除key所占用的空間。因此如果反復增加刪除key的話,會產生很多內存碎片。這就會影響之后申請大塊連續的內存空間,所以進行內存碎片整理很有必要。
在redis4點時候已經有自動整理內存碎片的功能了,不過那時候功能還屬於實驗階段。下圖是redis4文檔所說
redis5是在redis4的基礎上將內存碎片自動清理功能進行了完善,現在該功能已經成熟。
那么這個功能有如下作用:
1.在redis運行期間自動進行內存碎片清理,可以實時釋放內存空間。
2.通過內存報告來了解整個系統的內存使用情況。
在redis配置文件中查看內存碎片控制相關參數
參數說明:
1) activedefrag:內存碎片功能啟動配置項,當為yes就表示開啟該功能。
2)active-defrag-ignore-bytes:當內存浪費小於100M就忽略,大於100M就啟動內存碎片整理,這個值可以設置的。
3)active-defrag-threshold-lower:當內存浪費小於10%就暫時忽略,大於10%就啟動內存碎片整理,這個值可以設置的。
9.許多帶有子命令的命令現在都有一個help子命令。
10.客戶端斷開和連接時候性能更好。
11.錯誤修復和改進。
12.Jemalloc升級到5.1版本。