Redis与Memcache区别

Redis与Memcache对比

对比 Redis Memcache
性能 1. 比较高,性能对我们来说应该都不是瓶颈。
2. 总体来讲,TPS 方面 Redis 和 Memcache 差不多。
比较高。
数据结构 Redis 比 Memcache 数据结构丰富。 Memcache 数据结构单一。
内存空间 Redis 在 2.0 版本后增加了自己的 VM 特性,突破物理内存的限制,可以对key value 设置过期时间(类似 Memcache)。 Memcache 可以修改最大可用内存,采用 LRU 算法。
可靠性(持久化) 对于数据持久化和数据恢复,Redis 支持(快照、AOF),但依赖快照进行持久化的同时,对性能也产生了一定的影响。 Memcache 不支持,通常用在做缓存,提升性能。
数据一致性(事务支持) Redis 事务支持比较弱,只能保证事务中的每个操作连续执行。 Memcache 在并发场景下,用 cas 保证一致性。

Redis使用场景

有如下使用要求的,选择 Redis

复杂数据结构

  • value 是 哈希列表集合有序集合 等复杂数据结构的时候,选择 Redis 更合适,因为 Memcache 无法满足这样的需求。
  • 典型场景:用户消息,评论,订单列表等。

持久化

  • Memcache 不支持持久化。
  • Redis 支持持久化,但 Redis 持久化的使用需要注意,千万不要将 Redis 作为数据库来使用,因为,Redis 的定期快照不能保证数据不丢失,且 Redis 的 AOF 会降低效率,并且不能支持太大的数据量。

天然高可用

  • Redis 天然支持集群功能,可实现主从复制,读写分离。Redis 官方提供了 sentinel 集群管理工具,能够实现主从服务监控,故障自动转移。
  • Memcache 想要实现高可用,需要进行二次开发。

存储的value很大

  • Memcache 的 value 存储最大为 1M,如果存储的 value 很大,只能使用 Redis。

Memcache使用场景

有如下使用要求的,选择 Memcache

数据量

纯 kv,数据量非常大,并发量非常大的业务,使用 Memcache 更合适。

静态数据

对小型静态数据进行缓存处理,最具代表性的例子就是 HTML 代码片段。

Memcache 的内部内存管理机制虽然不像 Redis 的那样复杂,但却更具实际效率。