对比 Redis 与 Memcached

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

Antirez 的博文列举了几个他认为 Redis 比 Memcached 更优秀的地方, 但是并没有对 Redis 和 Memcached 的每个功能进行详细的对比, 而这篇文章要做的就是对 Antirez 的文章进行补充: 本文将从功能和网络搜索热度两个方面, 对 Redis 和 Memcached 进行详细的对比, 通过查看这些对比结果, 读者应该能明白 Redis 和 Memcached 之间的区别。

功能对比

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

结语

在看过了上文的对比之后, 读者应该能够明白 Redis 和 Memcached 之间有什么区别了。

因为笔者并不是特别熟悉 Memcached , 所以如果你发现本文中关于 Memcached 的描述有任何不正确的地方, 又或者我遗漏了 Memcached 的某项功能, 那么欢迎各位对文章进行补充。

黄健宏
2015.10.1

留言

comments powered by Disqus