redis2.6在前兩天發佈了(http://redis.io/download),當天下載的時候,在make時一堆編譯錯誤,後來看issue,跟linux系統版本及位數有關。
昨天作者 發佈了2.6.2,此版本修復了一些linux版本不兼容導致make不通過的問題,可是下下來以後,發現在測試機編譯還是有些問題,與是在issue上提出一個問題:(https://github.com/antirez/redis/issues/736#issuecomment-9848046) 早上來的時候,看到大牛們熱心的回覆,真的很感動。在測試機上,由於系統 是32位的,導致編譯時沒通過,首先我立馬確定了這個問題,在64位測試機上測試時,發現果然編譯可以通過,然後在32位上,跟據提示,在Makefile中增加一條CFLAGS= -march=i686,編譯也順利通過了,頓時感覺舒暢很多!
下載地址:http://redis.googlecode.com/files/redis-2.6.2.tar.gz
然後tar, make,即可。(make前,如果確認自己的測試機是32位linux,在src/Makefile文件中的頭部加上CFLAGS= -march=i686,可參考issuse中相關回答)
修改對應的redis.conf,然後啓動,即可進行測試了。
一.此版本主要更新的功能有:
1.支持lua腳本。
2.VM(虛擬內存)去掉了。
3.對於client的limit限制變成無限制。
4.aof性能提升了不少。
5.key的過濾時間可以支持毫秒級別了,原來是秒。
6.list與hash 的屬性filed或value包含小整數,內存優化列好(使用了jemalloc,以前是malloc)。
7.提供了BITCOUNT與BITOP,前者支持位值count,後者支持了位操作。(以前只支持key-value 的置位操作)
8.支持新命令dump以及restore ,即序列化與反序列化操作。
9.大數據存儲性能優化
等。
以上功能我比較關注的一個是lua腳本支持,一個是位操作的功能擴展。
對於位操作的增加,在2.4已經存在,通過setbit/getbit,相關操作(要注意大小端的問題,存儲讀取數據時)。
此次增加了bitcount,以及bitop操作,通過位操作,來增強一些統計功能等相關功能的實現應該有很大的幫忙。
對於我們的系統裏,以及用bit位記錄相關數據,但是一直不能位操作,一直在考慮是否自己增加,在2.6作者實現了。還是非常贊一個。
二.相關簡單測試:
使用了jemalloc,以及相關代碼的優化,redis2.6的性能一定有一定提升.
使用redis2.6.2與redis2.4.4相比。
相同環境下,進行一萬次set,一萬次get操作,兩者所花費的時間如下:
redis2.6.2 redis2.4.4
set操作 5938ms 6109ms
get操作 5985ms 5812ms
以上爲開發機上進行測試,並不能體現redis完整的性能,但是相同的環境下,可以測試redis不同版本的性能問題。從以上set get操作來看,redis2.6性能上還是有部分提升,但不大。
三.info指令初始化比較
在redis2.6下,通過src/redis-cli -h host -p port進入後,輸入info,相關redis參數:系統介紹以及redis相關參數及使用情況相比2.4更明瞭了。不同種類的配製參數都有相應的分類,查看起來變得更清晰可見了。
值得一提的是啓動時,redis2.6相關的內存變得更少了,如下:
reids2.6如下
used_memory:329672
used_memory_human:321.95K
used_memory_rss:2772992
used_memory_peak:1440576
mem_allocator:jemalloc-3.0.0
redis2.4如下:
used_memory:590428
used_memory_human:576.59K
used_memory_rss:3031040
used_memory_peak:6393444
mem_allocator:jemalloc-2.2.5
另外info指令在2.6中增加了cpu相關信息統計。
redis2.6 未引入集羣的功能(此功能項目中已經實現了分佈式,但還是很期待作者的實現。跳水一年,看作者的下一步計劃2.8有兩個主要功能,一個是redis sentinel (redis實例管理,監控,通知,自動恢復),另外一個是redis Cluster)。此兩功能估計還要一年,so long........)