REmote DIctionary Server(Redis),redis是一个基于内存的单机key/value系统,相似memcached,但支持value为多种形式,包括:字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和hash tablehtml
与memcache和MySQL等相似产品比较,Redis有如下几个优势:mysql
(1) 很是丰富的数据结构,且这些数据结构的常见操做均是原子性的;redis
(2) 高速读写。Memcached提供了CAS命令,能够保证多个并发访问操做同一份数据的一致性问题。 Redis没有提供CAS命令,不过Redis提供了事务的功能,能够保证一串命令的原子性,中间不会被任何操做打断。MYSQL使用了锁,而memcache未使用锁,进而效率极高。总之,Redis用本身实现的事件分离器,代码量很短,没有CAS,没有lock,于是效率很是高。关于memcache与redis的比较,可参考这篇文章:《Redis与Memcached的比较》[1]算法
(1) 持久化。 Redis直接将数据存储到内存中,可经过两种方式持久化:定时快照(snapshot)和基于语句的追加(Append Only File,aof)。Snapshot的方法是指每隔一段时间将整个数据库的数据写到磁盘上,很明显,每次均是写所有数据,代价很是高;而aof方法只追踪变化的数据,这相似于mysql的binlog方法,但追加log可能过大,同时全部操做均要从新执行一遍,恢复速度慢。sql
(2) 耗内存。尽管Redis对一些数据结构采用了压缩算法存储,但占用内存量仍是太高。数据库
[1] Redis与Memcached的比较http://tech.it168.com/a2011/0818/1234/000001234403_1.shtml 数据结构