当前位置: 首页 > news >正文

面试题:说一说redis和Memcached的区别

一、核心定位:从诞生之初就不同

  • Memcached是一个纯内存键值缓存系统,设计目标是 “为动态 Web 应用减轻数据库负载”,仅用于缓存热点数据,不支持持久化,重启即清空。它的核心是极致轻量化,只做最简单的键值读写,不引入额外复杂度。

  • Redis是一个内存型 NoSQL 数据库,不仅能做缓存,还支持持久化、丰富的数据结构和事务能力,可直接作为存储层使用(比如会话存储、消息队列)。它的定位是 “高性能 + 多功能”,兼顾缓存和业务存储场景。


二、技术架构:线程模型决定性能特点

特性MemcachedRedis
线程模型多线程模型(网络 IO 和计算都用多线程),天然利用多核 CPU,适合高并发简单读写。6.0 版本前是单线程计算 + 单线程网络 IO;6.0 后改为单线程计算 + 多线程网络 IO,计算仍为单线程(避免多线程锁竞争,提升复杂操作效率)。
网络模型基于 libevent 的事件驱动,支持多路复用。基于自己实现的 ae 事件驱动框架,性能更优。
内存管理采用 Slab 分配机制,把内存划分为固定大小的块,容易产生内存碎片,但分配速度快。早期用 malloc 动态分配,4.0 后默认用 jemalloc 优化内存碎片,内存利用率更高。

三、功能特性:Redis 全面碾压

这是两者最核心的差距:

  • 数据结构Memcached 仅支持 ** 字符串(String)一种结构,所有值都必须序列化为字符串存储。Redis 支持字符串、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet)、位图(Bitmap)、地理空间(Geo)、流(Stream)** 等十几种结构,可直接实现排行榜、计数器、消息队列等复杂业务逻辑。

  • 持久化Memcached 无持久化能力,重启后数据完全丢失。Redis 支持RDB(快照持久化)AOF(日志持久化),可定期将内存数据落地到磁盘,即使重启也能恢复数据,具备 “存储” 属性。

  • 集群与高可用Memcached 早期依赖客户端实现一致性哈希分片,官方集群方案(Memcached Cluster)生态薄弱,故障转移需依赖第三方工具。Redis 拥有原生 Cluster 模式,支持自动分片、副本同步和故障自动转移,生态成熟,社区工具丰富。

  • 附加功能Redis 还支持事务、Lua 脚本、发布订阅、过期策略、内存淘汰机制等,功能远超 Memcached。


四、性能表现:场景决定胜负

  • 简单键值读写场景Memcached 多线程模型更占优,理论 QPS 可达 10 万–20 万(理想场景下的 1M QPS 是极端优化后的结果,实际生产中很少达到)。Redis 单线程计算 + 多线程 IO 的模式,简单键值 QPS 约为 10 万–16 万,略低于 Memcached,但差距在 10%–20% 以内,远没有 “高 10 倍” 的夸张。

  • 复杂操作场景Redis 单线程模型避免了多线程锁竞争,在处理哈希、集合等复杂数据结构的操作时,性能反而比 Memcached 更稳定、更快。

  • 内存效率Redis 对小对象的压缩存储(如 ziplist 编码)比 Memcached 更高效,相同内存下能存储更多数据。


五、适用场景:按需选择

  • 优先选 Memcached 的场景

    1. 仅需简单键值缓存,不需要复杂数据结构;
    2. 对内存分配效率要求极高(如大量小对象缓存);
    3. 已有成熟的客户端分片方案,不需要官方集群支持。
  • 优先选 Redis 的场景

    1. 需要复杂数据结构(如排行榜、秒杀计数器、社交关系链);
    2. 需要持久化,避免重启丢失数据;
    3. 需要集群、高可用和完善的生态工具;
    4. 除了缓存,还要承担部分业务存储功能(如会话存储、消息队列)。

六、选型结论

目前绝大多数互联网公司的主流选择是Redis,因为它的功能覆盖了 Memcached 的所有场景,且能支撑更复杂的业务需求。只有在 “极致轻量化 + 纯简单缓存” 的特定场景下,Memcached 才会被保留(比如早期静态页面缓存)。

http://www.jsqmd.com/news/313931/

相关文章:

  • Leetcode49:字母异位词分组
  • 防渗漏托盘厂商选哪家?
  • Puppeteer MCP
  • GitHub MCP
  • TRAE开发复杂软件最佳实践
  • 【Python踩坑全纪录】-Windows 系统如何彻底卸载所有 pip install 安装的包?
  • 完整教程:中间件面试题
  • 即插即用系列 | AAAI 2026 WaveFormer: 当视觉建模遇上波动方程,频率-时间解耦的新SOTA
  • 【Redis面试高频篇】后端er必背:Redis面试20问,覆盖90%高频考点,背完稳了
  • 【游戏推荐】云族裔 韩国模拟人生 (inZOI)免安装中文版
  • 诱导公式速成
  • 基于Springboot+Vue的企业采购管理系统源码文档部署文档代码讲解等
  • 基于Springboot+Vue的企业数据资产登记系统源码文档部署文档代码讲解等
  • 堆垛机控制系统升降运动控制 FC15功能块实现
  • Uncertainty-Aware Bayesian PINN机械退化趋势预测(Pytorch)
  • 大数据描述性分析中的地理空间数据处理技巧
  • 个性化学习平台:AI架构师的数据库设计
  • 【游戏推荐】星际争霸:重制版 (StarCraft Remastered)免安装中文版
  • 液冷赛道爆发!塔能凭航天技术+插拔式改造,抢占算力中心市场C位
  • 【游戏推荐】特技射击模拟器 (TrickShot Simulator)免安装中文版
  • (实用向)中断服务程序(ISR)的优化方向
  • 基于Python的交通数据分析应用(源码+lw+部署文档+讲解等)
  • 大数据领域的实时数据采集方法
  • 数据预处理中的数据集成与融合技术
  • 深度测评 自考必用TOP8一键生成论文工具:高效写作全解析
  • litellm 使用介绍
  • 【模拟】螺旋矩阵
  • 大数据时代,数据合规的技术保障措施
  • 【剑斩OFFER】算法的暴力美学——力扣 1020 题:飞地的数量
  • iPhone XR 设备介绍:6种颜色 + 官方参数速查 + 体验亮点 + 二手选购避坑清单