memcached memcached 和 redis 使用场景及优缺点对比

简历
Memcached和redis非常相似:它们都是内存数据库,数据存储在内存中,直接通过tcp访问。优点是速度快,并发性高,缺点是数据类型有限,查询功能弱,一般作为缓存使用。
然后题主说redis可以做所有memcached的事情,那为什么memcached还在用?那是因为它们不是完全可以替代的,它们也有各自的优缺点
Memcached
Memcached的优势:
Memcached可以利用多核,单个实例的吞吐量极高,可以达到几十万QPS(取决于键值的字节大小和服务器的硬件性能,日常环境下的QPS峰值在4-6w左右)。
最大限度适合承载能力,有效解压服务器。
它可以直接配置为会话句柄。
配置维护的坑比较少。
Memcached的局限性:
数据结构简单单一,只支持简单的键/值数据结构,不像Redis可以支持丰富的数据类型。
无法持久,数据无法备份,只能用于缓存,重启后数据全部丢失。
无法同步数据并将MC中的数据迁移到其他MC实例。
Memcached内存分配采用Slab
分配机制管理内存。当值大小分布差异较大时,内存利用率会降低,利用率较低时,仍然会出现踢出的问题。用户需要注意价值设计。
Memcached服务器本身不支持水平扩展,因此需要在客户端编写缓存分配策略来实现分布式缓存。因为数据同步是不可能的,所以生产环境中的单机故障可能会影响一些业务操作。
使用心得
Redis的优势:
支持多种数据结构,如字符串(string)、
List,dict,set,zset,hyperloglog等。
支持持久化操作,可以将aof和rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,更好地防止数据丢失。
支持数据复制,可以通过主从机制实时同步复制数据,支持多级复制和增量复制。主从机制是Redis进行HA的重要手段。
单线程请求,所有命令串行执行,并发的情况下不需要考虑数据一致性。
它支持发布/订阅消息订阅机制,可用于消息订阅和通知。
支持简单的交易需求,但行业内使用场景少,不成熟。
Redis的局限性:
Redis只能使用单线程,性能受CPU性能限制,因此单实例CPU只能达到每秒5-6wQPS(取决于数据结构、数据大小和服务器硬件性能,日常环境下的QPS峰值在1-2w左右)。
支持简单的交易要求,但行业内使用场景少,不成熟,有利有弊。
Redis在字符串类型中消耗更多的内存,所以dict(哈希表)可以用来压缩存储以减少内存消耗。
总结
在我看来,Redis在很多方面都具有数据库的特点,或者说是数据库系统,而Memcached只是一个简单的K/V缓存。
而到底用redis还是memcached要看需求,因为memcached足以满足大部分需求,redis的出现只是提供了一个更好的选择,但并不意味着redis可以完全取代memcached,或者说,那要看你的需求。
根据新旧技术,redis比memcached新,但是当它醒来的时候,memcached应该更好。此外,趋势已经开始转向mongodb,因为redis的数据库特性,mongodb更优越。
【memcached memcached 和 redis 使用场景及优缺点对比】许多公司仍然在缓存策略中使用memcached,然后是redis,最后是mongodb。发现公司团队应用最新技术需要时间,很多公司团队还在使用旧的技术策略,因为技术是成型的,稳定性好,这也是为什么memcached比redis更被提及的原因。

    推荐阅读