赞
踩
说到缓存,现阶段很自然就会想到Redis和memcached。那么,二者有何区别呢?
1、二者都是采用KV键值对形式进行数据存储。但Redis支持的数据结构类型比memcached丰富。Redis支持String、list、set、hash、zset(有序集合)等数据结构,而 Memcached 仅支持String类型,复杂对象都要经过序列化后才能进行存储。
2、 Redis和Memcache都支持结构化数据,但memcache还可用于缓存图片、视频等等多媒体数据。
3、Redis可以使用虚拟内存,当物理内存用完时,可以将一些很久没用到的value 交换到磁盘 。因此,理论上Redis可以处理比物理内存更大的数据。而memcached则把所有的数据存储在物理内存里,受限于内存大小。
4、过期策略–memcache在set时就指定,即永不过期。Redis可以通过例如expire 设定。
5、从线程角度来说,memcahce使用多线程,主线程listen,多个worker子线程执行读写,可能会出现锁冲突。redis是单线程的,这样虽然不用考虑锁对插入修改数据造成的时间的影响,但是无法利用多核提高整体的吞吐量,只能选择多开redis来解决。
6、从IO角度来说,Redis选用的I/O多路复用模型(异步阻塞模型),虽然单线程不用考虑锁等问题,但是还要执行kv数据之外的一些排序、聚合功能,复杂度比较高。memcache也选用非阻塞的I/O多路复用模型,速度更快一些。
7、都支持分布式,都可以一主多从 。
8、redis支持持久化,有快照和AOF两种方式,而memcache是纯的内存存储,不支持持久化。
9、Redis支持数据的备份,即master-slave模式的数据备份。memcached不支持数据备份。
10、灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof(AppendOnly File)恢复。
11、Value 的大小:Redis 可以达到 1GB,而 Memcache 只有 1MB。(?)
redis比memcache功能更全,集成更方便,但是memcache相比redis在内存、线程、IO角度来说都有一定的优势,可以利用多核cpu提高性能,在不考虑扩展性和持久性的访问频繁的情况下,只存储kv格式的数据,建议使用memcache。memcache更像是个缓存,而redis更偏向于一个存储数据的系统。但是,redis并不适合真的当数据库来用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。