提到分布式缓存就不得不提及到Redis和Memcache的区别,刚到途家工作的时候,一些老项目基本上用的全是Memcache做缓存,后面也不断迁移成Redis,原因就是Memcache没人维护了,都搞Redis去了!
目前业界的主流也是使用Redis,相对于Memcache来说,Redis的主要优点有一下几个:
-
1.存储方式
-
Memcache把数据全部存在内存之中,断电后会挂掉,无法做到数据的持久化,且数据不能超过内存大小。
-
redis支持数据的持久化,RDB和AOF持久化,能保证数据的持久性。Redis还支持数据的备份,即master-slave(主从)模式的数据备份。
-
-
2.数据支持类型
-
Memcache对数据类型支持相对简单,只支持String类型的数据结构。
-
Redis作为其替代者,支持更为丰富的数据类型 ,包括:String、List、Hash、Set、Zset。
-
-
3.value值大小不同
-
Redis的key和string类型value限制均为512MB。
-
Memcache 只有 1M。
-
-
4.Redis的速度比Memcached快很多。
-
5.内存空间的限制
-
Memecache 把数据全部存在内存之中,数据不能超过实际内存大小。
-
Redis增加了VM的特性,突破了物理内存的限制。当Redis物理内存超过最大上限时,可以将一些很久没用到的value(冷数据)交换到磁盘。
-
- 6.Memcached不互相通信的分布式,分布式实现不是在服务器端实现的,而是在客户端应用中实现的,即通过内置算法制定目标数据的节点;而Redis不同节点间是相互通信的(通过二进制协议进行通信),数据分片实现是服务端实现的。如下图:
- 7.Redis支持多种集群模式,如:主从模式、哨兵模式、Redis cluster,适用于不同的业务场景。比如:redis cluster主要是针对海量数据+高并发+高可用的场景,海量数据,如果你的数据量很大,那么建议就用redis cluster;数据量不是很大时,使用哨兵模式就够了。
如果想详细了解redis的集群方式,请参考:史上最全的Redis集群方案总结。
2020年07月09号 晚 于北京记