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
[4] memcache基本原理
网友评论