Redis 2.6 新功能介绍及安装相关问题
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性能上还是有部分提升,但不大。