- redis是单线程的,因此在多核的机器上可以开多个redis,提高服务器性能利用率。
- redis有主从复制机制,通常用于提高读写数据性能。从redis服务器会定时向主redis服务器请求数据同步。
- redis存在set队列,可以去除重复的记录。
- redis存在自动排序队列,可以设定记录的排序权重来进行排序。
- redis有两种数据存储方式:
- 快照方式:redis定时把内存中的数据全部写到硬盘上。
- VM方式:redis把访问量大的数据(所在的页面)放在内存里,把访问量小的数据放到磁盘上。(目前不是很稳定)
- redis存储数据,单条记录越长,内存利用率就越高。
- 经测试,字节数在300以上,内存利用率已经达到95%以上。
- redis性能
软件:单个redis服务。
操作系统:VM虚机+ubuntu8.04。
VM硬件指标:
内存:768M
CPU:
品牌:intel i5
频率:2.66GHZ
核数:单核
性能指标如下(单条记录长度:1024):
写记录:46948次/秒
读记录:52083次/秒
在普通队列中插入元素:43478次/秒
在普通队列中弹出元素:47619次/秒
在set(唯一)队列中添加元素:50761次/秒
在set(唯一)队列中弹出元素:46511次/秒
- 缺点
- 当redis服务受到压力过大时,其他客户端访问redis服务会没有任何响应(得不到返回)。
官方文档:
redis源码doc目录中的所有文档
官方网站:http://redis.io/
国外分析文档:
redis-from-the-ground-up:
http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html
Redis: under the hood
http://pauladamsmith.com/articles/redis-under-the-hood.html
redis cookbook:http://www.rediscookbook.org/
redis tutorial:
http://simonwillison.net/static/2010/redis-tutorial/
Redis Virtual Memory: the story and the code:
http://antirez.com/post/redis-virtual-memory-story.html
redis性能测试:
http://jaksprats.wordpress.com/2010/09/22/12/
一些中文文档:
概述性的介绍了redis的特点和使用:
http://www.cnblogs.com/xhan/archive/2011/02/08/1949867.html
读Redis有感:
http://blog.csdn.net/gpcuster/archive/2010/10/21/5956555.aspx
Redis误区
http://timyang.net/data/redis-misunderstanding/
Redis内存陷阱
http://www.javaeye.com/topic/808293
接下来的分析主要基于2.0.4,我是从去年11月份开始学习这个代码的,那时的稳定版本还是2.0.4的,没想到,才不到半年时间,就升到了2.2.4,代码结构也有了很大的变化,原来2.0.4一个redis.c文件有11000行代码,像aof、rdb、vm等功能都集成到这一个文件里,当时看起来真费劲,不过之后作者把这些功能分开了,放到不同的文件里了。不过功能还没有太大的变化,还是可以借鉴的。
备注:我将一些文章中的代码着色后会使得文章超过baidu空间中的字数限制,这就迫使我寻求其他方法。最后在redice的帮助下,利用他的主机搭建了一个个人blog,在此谢过redice。所有文章仅在个人blog进行后续更新,baidu空间仅作为一个备份。