redis 2.6 新功能介绍及安装相关问题

来源:互联网 发布:极有有趣的段子知乎 编辑:程序博客网 时间:2024/04/29 08:45

    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........)





原创粉丝点击