Redis 的对象共享机制和 refcount 内存管理
pren 发布于 2026-09-22
Redis 作为一款高性能的内存数据库,其内存管理机制一直是面试中的高频考点。很多开发者在使用 Redis 时,只关注它的命令和数据结构,却忽略了底层的内存管理细节。其中,对象共享机制和 refcount 引用计数是理解 Redis 内存优化的关键。本文将从底层实现出发,带你彻底...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 作为一款高性能的内存数据库,其内存管理机制一直是面试中的高频考点。很多开发者在使用 Redis 时,只关注它的命令和数据结构,却忽略了底层的内存管理细节。其中,对象共享机制和 refcount 引用计数是理解 Redis 内存优化的关键。本文将从底层实现出发,带你彻底...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
引言 在使用 Redis 时,很多开发者都遇到过这样的场景:删除一个包含数百万元素的 Hash,或者对一个大型 Set 执行 DEL 操作后,Redis 突然卡住了一两秒甚至更久,所有后续请求都被阻塞。这不是网络问题,也不是客户端问题,而是 Redis 单线程模型下大 key 删...
阅读(21)评论(0)赞 (0)
pren 发布于 2026-09-22
引言 Redis 作为最流行的内存数据库之一,其持久化机制一直是面试中的高频考点。AOF(Append Only File)通过记录写命令来实现持久化,但随着时间推移,AOF 文件会不断膨胀。为了解决这个问题,Redis 引入了 AOF 重写(Rewrite) 机制。而重写过程中...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 主从切换是保障高可用的核心机制,但很多开发者在使用哨兵(Sentinel)或 Cluster 时都遇到过切换后数据丢失的问题。不少人第一反应是“Redis 不可靠”,但事实上,绝大多数数据丢失都源于对异步复制模型的理解偏差,以及配置参数与业务场景不匹配。本文将从复制原...
阅读(22)评论(0)赞 (0)
pren 发布于 2026-09-22
很多同学在面试中被问到 Redis 持久化时,都能答出 RDB 和 AOF 的区别,但一旦面试官追问:“RDB 在 fork 子进程时,为什么会导致内存膨胀?” 不少人就开始含糊了。有人说是因为写时复制(CopyOnWrite)本身就会复制内存,也有人说是 fork 本身会拷贝页...
阅读(22)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 作为内存数据库,持久化机制一直是面试中的高频考点,而 AOF(Append Only File)的 fsync 策略更是核心追问点。很多候选人能背出 appendfsync 有三个取值,却说不清它们对性能和数据安全的实际影响,更无法在真实场景中做出合理选择。本文从底层...
阅读(25)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 在 5.0 版本引入 Stream 类型,目标很明确:提供一个更完整、更可靠的消息队列原语。在此之前,开发者用 List 做队列、用 Pub/Sub 做广播,但都有明显短板。Stream 填补了持久化、消费者组、消息确认这些关键能力的空白。下面从面试常见问题出发,把 ...
阅读(25)评论(0)赞 (0)
pren 发布于 2026-09-22
引言 在分布式系统架构中,消息队列扮演着至关重要的角色。Redis Stream 和 Apache Kafka 是当前面试中经常被拿来对比的两个消息中间件方案。虽然二者都能实现消息的发布与消费,但在设计理念、数据持久化、吞吐能力和适用场景上存在显著差异。本文将从多个维度深入对比 ...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的源码中,有一个非常核心且常被面试官问到的数据结构——SDS(Simple Dynamic String,简单动态字符串)。Redis 没有直接使用 C 语言原生的字符串(以空字符 \0 结尾的字符数组),而是自己实现了一套动态字符串。这背后有非常充分的工程考量,...
阅读(24)评论(0)赞 (0)
pren 发布于 2026-09-22
什么是 Redis Bitmap 在面试中,当面试官问到 Redis 的数据结构时,大多数人会脱口而出:String、List、Hash、Set、ZSet。但很少有人会主动提到 Bitmap。其实 Bitmap 并不是 Redis 独立的数据类型,它本质上是基于 String 类...
阅读(20)评论(0)赞 (0)