简述Redis 与 Memcached区别

本文详细探讨了Redis和Memcached在数据类型、内存管理、数据备份持久化、并发性能以及可用性、可靠性和一致性等方面的差异。Memcached提供基本的数据存储,适合简单缓存场景,而Redis支持更丰富的数据结构,适用于需要持久化和高并发的复杂应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis 和 Memcached 都是企业常用缓存工具,现在从以下几点分析两者的区别

  1. 数据类型
  2. 内存管理
  3. 数据备份和持久化
  4. 并发性能
  5. 可用性, 可靠性,一致性
  6. 特殊场景

1、数据类型

memcached 仅仅支持简单的key-value结构数据, Redis 支持的数据结构比较丰富,  String Hash List Set SortedSet;  开发中Hash 数据格式使用较多

2、内存管理

memcached 预设内存以存贮相对应key-value 数据,容易产生内存内存碎片; 当断电或者数据容量大于内存时内存数据将被删除;简单的使用key-value话mamcached 效率比较高

redis 将数据都缓存在内存中,当出现断电或者数据容量大于内存时内存数据时部分数据将被刷到磁盘上,很好支持数据落地;

3、数据备份和持久化

在备份容错方面 memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复,Redis支持数据的备份,即master-slave模式的数据备份

4、并发性能

redis 是单核, Memcached 是多核处理,对于简单的key-value数据mamcached 内存利用率比较高;
redis 使用hash 数据结构对组合key 进行压缩,在高并发大数据量下内存利用率要高于redis;

5、可用性, 可靠性,一致性

Memcached的优点:

1、Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。
2、适用于最大程度扛量,有效为服务器减压。
3、支持直接配置为session handle。
4、配置维护的坑比较少。

Memcached的局限性:

1、数据结构很简单单一,只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。
无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。
2、Memcached内存分配采用Slab
3、Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。
4、memcached服务端原生不支持水平扩展,必须在客户端编写缓存分布策略来实现分布式缓存,并且由于无法进行数据同步,因此生产环境中出现单机故障时可能会影响部分业务运行。

Redis的优点:

1、支持多种数据结构,比如 string(字符串)、
list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)等等。
支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。
2、单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
3、支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
4、支持简单的事务需求,但业界使用场景很少,并不成熟。

Redis的局限性:

1、Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。
2、支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。
3、Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

参考:
http://chentian114.iteye.com/blog/2270254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值