对比 Redis 与 Memcached

前几天, Redis 的作者 Antirez 写了一篇博客, 驳斥了某个库作者认为 Redis 比不上 Memcached 的观点。

Antirez 的博文列举了几个他认为 Redis 比 Memcached 更优秀的地方, 但是并没有对 Redis 和 Memcached 的每个功能进行详细的对比, 而这篇文章要做的就是对 Antirez 的文章进行补充, 对 Redis 和 Memcached 进行详细的对比, 通过查看这些对比结果明白 Redis 和 Memcached 之间的区别。

Memcached是个纯内存型的缓存系统,支持数据类型单一,单个缓存数据有限制,支持分布式,是个很理想的缓存系统。

Redis是个简单的NOSQL数据库,支持几种简单的数据类型,支持主从复制,支持持久化,可以看作是个内存型数据库。

由此可见,Memcached是正宗的缓存系统,Redis是个可以做缓存系统的内存型数据库。

由于Redis的数据可以设置过期时间,支持多种数据类型,数据大小无限制,支持持久化等特点,貌似怎么看都稳压Memcached一筹,替代它好像是大势所趋。

事实并非如此。

网站需要缓存的数据可以分为两种,一种是可丢失性的缓存,这种缓存不在乎被丢失,丢失了就再从数据库或其它地方再读回来,如Session,从数据库查询的数据,应用代码的缓存等;另一种是不可丢失性的缓存,就是其它地方没保存有,只有Redis缓存有的数据。

先说下Memcached和Redis的优缺点:

Memcached是纯内存型的缓存,占用内存小,运行稳定,读写数据很快。Redis的数据可以持久化到硬盘,占用内存大,占用硬盘IO高,在写频繁的时候而硬盘性能又不高的时候(目前只有SSD固态硬盘的性能才高,机械硬盘性能都不高),大大占用CPU资源,读写性能会急剧降低,甚至会崩溃,不稳定。

为什么说Memcached可以缓存Session数据?有的人说,Memcached崩溃会造成Session丢失,我觉得这个可能性真的不大。Session是每个页面都需要读,每个新用户都需要写的,而且大部分的Session数据都是可丢失性的数据(一般网站陌生人Session比登录用户Session要多的多),数据量也很小,非常适合保存在Memcached。

Memcached其实是非常稳定的,目前我们网站每天百万PV,没出现过Memcached崩溃的问题。只要服务器不崩溃,不是人为关闭,Memcached几乎没有崩溃的可能。如果服务器经常崩溃的话,我觉得应该考虑换个好点的服务器而不是把Memcached换成Redis。

当然了,Redis也有其适用的场合,使用Redis保存那些不可丢失性数据。

功能对比

对比项目 Memcached Redis
支持的数据结构
  • 字符串(二进制安全,可直接储存字节数据)
  • 字符串(二进制安全,可直接储存字节数据)
  • 散列
  • 列表
  • 集合
  • 有序集合
  • 位图(bitmap)
  • 地理位置(GEO)
  • HyperLogLog
单机附加功能
  • 自动过期
  • 流水线
  • 自动过期
  • 流水线
  • 事务
  • Lua 脚本
  • 发布与订阅
  • 键空间通知
  • AOF 持久化
  • RDB 持久化
多机附加功能
  • 由客户端实现的,基于分片的集群(无Sentinel或复制)
  • 由服务器端实现的,基于分片的集群,自带Sentinel和复制
  • 复制(无需集群,可独立运作)
  • Sentinel(无需集群,可独立运作)
  • twemproxy、codis、redis-cerberus 等多种第三方代理可选
内存分配方式 slab jemalloc
网络模型 使用多个线程处理多个客户端,使用锁对线程进行同步 单线程,通过 I/O 多路复用来处理多个客户端

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-1813731/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9399028/viewspace-1813731/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值