Sunday面试指南

Redis 和 Memcached 有什么区别?纯缓存场景应该怎么选?

以下对话为教学模拟,不是真实面经。

🧑‍💻 面试官:Redis 和 Memcached 怎么选?

🙋‍♂️ 我:Redis 功能更多,所以肯定选 Redis。

🧑‍💻 面试官:如果只需要临时缓存一段序列化数据呢?功能更多会自动让缓存命中率更高吗?

缓存选型先明确需要什么语义,再比较相同条件下的成本。

面试速答(60 秒版)

Redis 提供多种数据结构和相关操作,也有持久化、复制等能力。Memcached 更聚焦简单的键值缓存,常见用法是存放可以重新获得的临时数据。

如果需要计数、集合、排序或对数据结构进行操作,Redis 的能力更适合。如果只是缓存序列化结果,Memcached 也值得比较,不能因为功能少就认为不适合生产。

选型还要看缓存是否允许丢失、容量和淘汰策略、并发方式、运维与客户端支持。两者都不会自动解决缓存一致性和源系统过载。

所以,我会用相同对象、有效期和故障条件验证,而不是只比较功能清单或引用一份不说明条件的性能数字。

速答总览:缓存选型先看数据语义与丢失容忍,再比较相同负载和故障条件下的系统成本。

知识点详解:先判断缓存保存的是结果,还是可操作的数据

简单结果缓存,不一定需要复杂结构

咱们假设商品详情由数据库查询和业务拼装获得,缓存里只保存序列化后的结果。读取时整段拿出来,更新时整段替换。

这种需求主要关注键、值、有效期和容量。Memcached 的核心模型比较贴近这种使用方式。Memcached 用户指南说明了常见键值操作与缓存使用原则。

如果缓存里保存的是排行榜、计数器或需要局部修改的结构,Redis 的数据类型和操作接口可能减少应用工作。这里的价值是具体操作语义,不是“数据结构越多,缓存越好”。

可重建数据,和系统唯一数据必须分开

Memcached 通常用于可丢失、能够从源系统重建的缓存。Redis 可以配置持久化和复制,但配置这些能力,也不等于永不丢失。

Redis 的持久化说明列出了不同方式与取舍。是否把 Redis 当成某项数据的主要存储,应依据实际可靠性设计,而不能只因为它支持落盘。

对于普通缓存,最重要的故障问题可能是:缓存清空以后,数据库能不能承受集中回源?即使缓存本身很快,源系统被压垮,用户仍然无法使用应用。

并发与内存,要按版本和工作负载比较

Memcached 与 Redis 的线程、I/O 和执行模型不同,而且版本会持续演进。不能用“Redis 永远只有一个线程”概括整个进程,也不能只根据线程数量推断吞吐。

对象大小、编码方式、分配与淘汰,都影响有效容量。一个产品存储更多键,不代表另一个产品一定浪费;需要确认对象和配置是否相同。

Redis 的对比资料来自供应商,可作为能力入口,但不能把其中的评价直接当成独立性能结论。技术选型应结合两方文档和自己的目标负载。

分布方式与运维责任,也不同

需要多个节点时,键怎样分配、节点故障怎样处理、客户端怎样更新,都要明确。Memcached 常见部署依赖客户端等方式组织分布,Redis 也有不同部署模式,不能把单节点体验直接推导成集群体验。

有效期和淘汰策略则决定数据什么时候消失。应用必须能够处理 miss,不能假设写入成功以后,缓存会一直保留到自己指定的时刻。

权限、网络隔离和监控同样需要设计。缓存里即使不是唯一数据,也可能包含敏感内容,不应直接暴露给不可信网络。

比较一条完整缓存链,而不是只测 set/get

可以固定一组对象大小、访问分布和有效期,观察命中率、尾延迟、内存、回源次数,再模拟缓存节点退出。

还要验证更新和失效流程。Redis 或 Memcached 的选择,不会自动保证数据库更新以后所有缓存都同步改变。

如果系统已经用 Redis,改成 Memcached 需要证明收益足以覆盖迁移和运维成本;反过来也一样。最合适的方案,可能是继续使用已经可靠运行的简单方案。

缓存丢失后的回源压力

面试官继续追问

Redis 可以完全代替数据库吗?

不能泛化。是否适合作为主要存储,取决于数据模型、查询、可靠性和故障恢复要求。支持持久化不等于满足所有数据库需求。

Memcached 没有复杂结构,怎样做复杂缓存?

可以在应用中序列化结果,但局部操作与并发更新需要另外处理。是否值得这样做,要比较具体需求。

缓存节点重启最先要关注什么?

数据可恢复性和回源压力。缓存恢复很快,但源系统被集中请求压垮,也可能造成故障。

面试速记卡

  • Redis:多种数据结构与操作,可靠性能力需要配置。
  • Memcached:聚焦可重建的简单键值缓存。
  • 选型起点:数据是整体结果,还是需要结构化操作。
  • 共同边界:一致性、miss 和回源压力仍由系统处理。
  • 比较条件:同对象、同有效期、同故障目标。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历