redis2.6在前两天发布了(http://redis.io/download),当天下载的时候,在make时一堆编译错误,后来看issue,跟linux系统版本及位数有关。
昨天作者 antirez发布了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........)