前言

Memcache

特点

  • 处理请求时使用多线程异步 IO 的方式,可以合理利用 CPU 多核的优势,性能非常优秀

  • 功能简单,使用内存存储数据

缺点

  • 使用 MC 有一些限制,这些限制在现在的互联网场景下很致命,成为大家选择Redis、MongoDB的重要原因
    • key 不能超过 250 个字节
    • value 不能超过 1M 字节
    • key 的最大失效时间是 30 天
    • 只支持 K-V 结构
    • 不提供持久化和主从同步功能

Redis

特点

  • Redis 采用单线程模式处理请求,这样做的原因有 2 个:

    • 采用了非阻塞的异步事件处理机制
    • 缓存数据都是内存操作 IO 时间不会太长,单线程可以避免线程上下文切换产生的代价
  • Redis 支持持久化,所以 Redis 不仅仅可以用作缓存,也可以用作 NoSQL 数据库

  • Redis 提供主从同步机制,以及 Cluster 集群部署能力,能够提供高可用服务。

缺点

对比

Redis 支持复杂的数据结构

  • Redis 相比 Memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, Redis 会是不错的选择。

Redis 原生支持集群模式

  • 在 redis3.x 版本中,便能支持 Cluster 模式,而 Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。

性能对比

  • 由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。

  • 而在 100k 以上的数据中,Memcached 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Remcached,还是稍有逊色。

参考