Redis和Memcache的主要区别

提到分布式缓存就不得不提及到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不同节点间是相互通信的(通过二进制协议进行通信),数据分片实现是服务端实现的。如下图:

Redis和Memcache的主要区别_第1张图片

  • 7.Redis支持多种集群模式,如:主从模式、哨兵模式、Redis cluster,适用于不同的业务场景。比如:redis cluster主要是针对海量数据+高并发+高可用的场景,海量数据,如果你的数据量很大,那么建议就用redis cluster;数据量不是很大时,使用哨兵模式就够了。

   如果想详细了解redis的集群方式,请参考:史上最全的Redis集群方案总结。

 

                                                                                 2020年07月09号 晚 于北京记

 

你可能感兴趣的:(Redis,redis,分布式,java)