Memcache和Redis

Memcache/redis

Redis 和 Memcached 都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,本质上就是一个内存key-value数据库。Redis是一个开源的key-value存储系统。

区别

1.数据操作不同

Memcached仅支持简单的key-value结构的数据记录,而且还可用于缓存其他东西,例如图片、视频等等;

Redis支持list、set、sorted set、hash等众多数据结构;

所以,如果在Memcached里,使用者需要将数据拿到客户端来进行类似的修改再set回去,这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作, Redis会是更好的选择。

2.可持久化存储

memecache:把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小 redis:支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。

3.性能不同

由于Redis是单进程单线程,只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis也在存储大数据的性能上进行了优化,但是比起Memcached,还是稍有逊色。

使用场景

Redis更多场景是作为Memcached的替代者来使用,当需要除key-value之外的更多数据类型支持或存储的数据不能被剔除时,使用Redis更合适。如果只做缓存的话,Memcached已经足够应付绝大部分的需求,Redis 的出现只是提供了一个更加好的选择。总的来说,根据使用者自身的需求去选择才是最合适的。

reference:

[1] https://developer.aliyun.com/article/653062

[2] https://cloud.tencent.com/developer/article/1692015

[3] Memcached内存分配机制及分布式算法分析

[4] memcache基本原理

你可能感兴趣的:(Memcache和Redis)