分布式缓存的话,使用的比较多的是Memcached和Redis。
不过现在基本没有用Memcached来做缓存,都是直接用Redis。
Memcached是分布式缓存最开始兴起的那会,比较常用的。后来,随着Redis的发展,大家慢慢转而使用更加强大的Redis了。
Redis和Memcached的区别和共同点
共同点:
- 都是基于内存的数据库,一般都用来当做缓存使用。
- 都有过期策略
- 两者的性能非常高
区别:
- Redis支持更丰富的数据类型(支持更复杂的应用场景)。Redis不仅仅支持简单的k/v类型的数据,同时还提供list、set、zset、hash等数据结构的存储
- Redis支持数据的持久化,可以将内存中的数据都保存在磁盘中,重启的时候可以再次加载进行使用,而Memcache把数据全部存在内存之中。
- Redis有灾难恢复机制。因为可以把缓存数据持久化到磁盘上。
- Redis在服务器内存使用完之后,可以将不用的数据放到磁盘上,但是Memcache在服务器内存使用完之后,就会报异常。
- Memcache没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据,但是Redis目前是原生支持cluster模式的。
- Memcached是多线程,非阻塞IO复用的网络模型,Redis使用单线程的多路IO复用模型。
- Redis支持发布订阅模型、lua脚本、事务等功能,而Memcached不支持。并且,Redis支持更多的编程语言。
- Memchached过期数据的删除策略只用了惰性删除,而Redis同时使用了惰性删除和定期删除。