这里写目录标题

  • 分布式缓存常见的技术选型方案
  • Redis 和 Memcached 的区别和共同点
  • 共同点
  • 区别


分布式缓存常见的技术选型方案

分布式缓存的话,使用的比较多的主要是 Memcached 和 Redis。不过,现在基本没有看过还有项目使用 Memcached 来做缓存,都是直接用 Redis。

Memcached 是分布式缓存最开始兴起的那会,比较常用的。后来,随着 Redis 的发展,大家慢慢都转而使用更加强大的 Redis 了。

分布式缓存主要解决的是单机缓存的容量受服务器限制并且无法保存通用的信息。因为,本地缓存只在当前服务里有效,比如如果你部署了两个相同的服务,他们两者之间的缓存数据是无法共同的。

Redis 和 Memcached 的区别和共同点

共同点

  1. 都是基于内存的数据库,一般都用来当做缓存使用。
  2. 都有过期策略。
  3. 两者的性能都非常高。

区别

  1. Redis 支持更丰富的数据类型(支持更复杂的应用场景)。Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供list,set,zset,hash 等数据结构的存储。Memcached 只支持最简单的 k/v 数据类型。
  2. Redis支持数据的持久化。Redis可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memcached 把数据全部存在内存之中。
  3. Redis 有灾难恢复机制。 因为可以把缓存中的数据持久化到磁盘上。
  4. Redis 在服务器内存使用完之后,可以将不用的数据放到磁盘上。但是,Memcached 在服务器内存使用完之后,就会直接报异常。
  5. Redis 目前是原生支持 cluster 模式的。Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。
  6. Redis 使用单线程的多路 IO 复用模型(Redis 6.0 引入了多线程 IO )。Memcached 是多线程,非阻塞 IO 复用的网络模型。
  7. Redis 支持发布订阅模型、Lua 脚本、事务等功能,而 Memcached 不支持。。
  8. Redis 的删除策略同时使用了惰性删除与定期删除。Memcached过期数据的删除策略只用了惰性删除。