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