redis5.0版是Redis產(chǎn)品的重大版本發(fā)布,我們先看一下它的最新特點(diǎn):
新的流數(shù)據(jù)類型(Stream data type) https://redis.io/topics/streams-intro
新的 Redis 模塊 API:定時(shí)器、集群和字典 API(Timers, Cluster and Dictionary APIs)
RDB 增加 LFU 和 LRU 信息
集群管理器從 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 語言代碼
新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞變體(blocking variants)
升級(jí) Active defragmentation 至 v2 版本
增強(qiáng) HyperLogLog 的實(shí)現(xiàn)
更好的內(nèi)存統(tǒng)計(jì)報(bào)告
許多包含子命令的命令現(xiàn)在都有一個(gè) HELP 子命令
客戶端頻繁連接和斷開連接時(shí),性能表現(xiàn)更好
許多錯(cuò)誤修復(fù)和其他方面的改進(jìn)
升級(jí) Jemalloc 至 5.1 版本
引入 CLIENT UNBLOCK 和 CLIENT ID
新增 LOLWUT 命令 http://antirez.com/news/123
在不存在需要保持向后兼容性的地方,棄用 "slave" 術(shù)語
網(wǎng)絡(luò)層中的差異優(yōu)化
Lua 相關(guān)的改進(jìn)
引入動(dòng)態(tài)的 HZ(Dynamic HZ) 以平衡空閑 CPU 使用率和響應(yīng)性
對(duì) Redis 核心代碼進(jìn)行了重構(gòu)并在許多方面進(jìn)行了改進(jìn)
Redis Stream
Redis stream本質(zhì)上是個(gè)時(shí)序數(shù)據(jù)結(jié)構(gòu),具有如下特點(diǎn):
每條記錄是結(jié)構(gòu)化、可擴(kuò)展的對(duì)
每條記錄在日志中有唯一標(biāo)識(shí),標(biāo)識(shí)中包含了時(shí)間戳信息,單調(diào)遞增
可以根據(jù)需要自動(dòng)清理歷史記錄
保存在內(nèi)存中,支持持久化
底層是修改版的radix tree,每個(gè)node存儲(chǔ)了一個(gè)listpack。listpack是一塊連續(xù)的內(nèi)存block,用于序列化msg entry及相關(guān)元信息,如msg ID,使用了多種編碼,用于節(jié)省內(nèi)存,是ziplist的升級(jí)版。如果XADD每次添加的對(duì)中的field是一樣的,那么field不會(huì)重復(fù)存儲(chǔ)。






