redis
文章平均质量分 90
redis
乔丹搞IT
理工男一枚,十多年的IT领域的开发经验。最早从事软件实施工作开始,到软件开发,到数据处理等工作。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Xshell效率实战:SSH管理秘籍
双击即连、宏即巡检、按钮即发布、拖拽即传文件;百台服务器分组+染色+搜索,3 秒定位;日志、密钥、隧道、高亮、云端同步全开,安全又省心。把这些配置导出成.xsh会话包备份,下次换电脑 1 分钟恢复原状,真正做到“Xshell 在手,SSH 无忧”。祝你效率翻倍!原创 2025-10-10 20:50:33 · 1348 阅读 · 0 评论 -
27.面试与总结——30 道高频面试题精讲,学习路线图回顾 & 社区贡献指南
至此,从“浏览器回车”到“CI 绿灯”,从“Hello World”到“30 道面试题”,我们完成了一条完整的现代前端链路。把系列文章打印出来,就是一份自带目录的“纸质知识库”;把 GitHub 仓库星标起来,就是一把随时可以拔出的“瑞士军刀”。技术成长没有终点,只有分叉口:你可以继续深耕框架源码,也可以往全栈、架构、产品甚至开源商业进发。无论选择哪条路,保持“写代码、写文字、写人生”的节奏,下一次面试,坐在对面的考官其实也在等你分享——“原来这个问题还能这样解”。原创 2025-10-10 20:47:03 · 871 阅读 · 0 评论 -
26.实战案例复盘——秒杀库存扣减 Lua 脚本,排行榜赛季结算 2 亿条数据,社交平台 Feed 流推送
Key -> userId,Value -> score,相同 user 多分区累加,输出 <userId, totalScore>,2 亿 → 1.2 亿。粉丝 > 1 w 的大 V 发 Feed 时,若 fan 的 inbox 为空,触发异步任务补全最近 20 条,防止首刷空窗。使用 Redis pipeline,单次 100 条,batch 大小 8 k,单机 40 w/s。Redis 只读 1 Gbps,无阻塞。赛季 30 天,日活 800 w,写入 9 000 w/天,共 2.1 亿条积分明细。原创 2025-10-08 08:13:59 · 1100 阅读 · 0 评论 -
25.微服务缓存设计模式——Cache-Aside、Read-Through、Write-Behind,分布式锁 Redlock 争议与 Redisson 实现
在上一节我们把 Redis 集群搭好、把序列化协议定了,但“有缓存”不等于“缓存好用”。业界把最常见的三种套路抽象成 Cache-Aside、Read-Through、Write-Behind(也叫 Write-Back)。分布式锁能不用就不用,必须用时就接受“锁失效”的兜底方案(幂等、幂重、对账)。下一节我们将进入“缓存与数据库的最终一致性”实战:基于 Canal + Kafka 的异步消息链路透传,以及“缓存击穿、雪崩、穿透”的三板斧防护。缓存除了“存数据”,还常被顺手当成“分布式锁”。原创 2025-10-08 08:09:02 · 758 阅读 · 0 评论 -
24.容器与云原生——Docker 官方镜像最佳实践,K8s StatefulSet + Sentinel 高可用
K8s 滚动升级时,旧 Pod 与新 Pod 并存 30 s,Sentinel 可能同时看到 5 个 Sentinel 与 3 个 Sentinel 两种视图,触发两次 failover,出现双主。把 digest 写进 Dockerfile / Helm values,CI 做一次不可变推送,后续任何节点拉到的都是同一层 blob,符合“可重复构建”合规基线。识别主节点,Pod 重建后 IP 必变,导致“主观下线”永远投票不过半。写进自身配置文件,容器一旦重启,写层丢失,又回到“刚出厂”状态。原创 2025-09-30 07:07:53 · 877 阅读 · 0 评论 -
23.RedisInsight & 可观测——内存密钥分析 + RDB 解析,Prometheus + Grafana 模板
23 RedisInsight & 可观测——内存密钥分析 + RDB 解析,Prometheus + Grafana 模板——把“看不见”的内存变成“可观测”的指标,让每一次 key 过期都能被量化1.2 三大核心视图1.3 实战 30 秒定位“僵尸”key场景:内存凌晨 3 点突增 5 GB。步骤:a) 在 Memory Overview 里框选 02:50-03:10 的曲线,右键“Analyze Snapshot”;原创 2025-09-29 17:45:10 · 718 阅读 · 0 评论 -
22.模块系统——编写 C 扩展“Redis-Hello”,RediSearch + JSON 联合索引
22. 模块系统——编写 C 扩展“Redis-Hello”,RediSearch + JSON 联合索引。既演示了模块系统的钩子深度,也验证了 RediSearch + RedisJSON 的联合威力。下一节将拆解“Redis-Hello”的异步线程池改造,把 CPU 密集的分词任务从主线程挪走,通过不到 500 行 C,我们让一个普通 Redis 实例拥有了“文档写入即索引”的能力,整个模块体积 < 500 行 C,零配置,编译后只有 18 KB,加载不到 2 ms。argv[4] 是索引前缀;原创 2025-09-29 11:58:10 · 508 阅读 · 0 评论 -
21.性能调优实战——redis-benchmark 坑点,100w qps 突破:绑核、NUMA、中断亲和
硬中断均衡失败,跨 NUMA 内存一跳 120 ns,上下文切 1.2 M/s。下面把踩过的 5 个坑、4 条命令、3 组参数、2 行代码、1 个脚本一次性摊开,带你把单实例 Redis 推到 100 w QPS(单条 16 Byte 读,P99 < 1 ms),并保证 8 核负载 95 % 仍线性可压。假设 2 NUMA、16 Core、32 HT,eth0 8 队列,0-7 号中断落在 NUMA0。这样硬中断 0-7,软中断 8-15,Redis 线程 8-15,三层同一 NUMA,零跨跳。原创 2025-09-29 11:30:30 · 864 阅读 · 0 评论 -
20.安全与 ACL——Redis 6 ACL 规则语法,TLS 1.3 加密通道
20. 安全与 ACL——Redis 6 ACL 规则语法,TLS 1.3 加密通道(接上文《19. 高可用演进:从主从、哨兵到 Cluster 的踩坑实录》)原创 2025-09-28 16:29:47 · 908 阅读 · 0 评论 -
19.慢查询 & Latency——慢日志阈值设置,Intrinsic Latency 测试
19. 慢查询 & Latency——慢日志阈值设置,Intrinsic Latency 测试(接上文《18. 生产级延迟分布可视化》)原创 2025-09-28 15:20:27 · 776 阅读 · 0 评论 -
18.事件模型——ae_epoll 事件循环源码走读,命令执行 pipeline 图解
源码位置:src/ae_epoll.c(Redis 7.2 分支,commit 7b0c25c)18. 事件模型——ae_epoll 事件循环源码走读,命令执行 pipeline 图解。(基于 优快云 前文 152161640 的上下文,继续深入)下面把“客户端发来一条 SET” 时,Redis 主线程。所走的路径画成一张泳道。原创 2025-09-27 16:32:12 · 846 阅读 · 0 评论 -
17.内存管理——jemalloc 碎片率统计,内存淘汰 8 种策略 + LRU/LFU 近似算法
(接上一篇《16. 内存管理——jemalloc 基础与 arena 划分》)原创 2025-09-27 10:14:57 · 723 阅读 · 0 评论 -
16.代理与横向扩展——Twemproxy/Redis-Codis 对比,Redis 6.0 IO 多线程模型
本章聚焦路线 2,把历史上最具代表性的两个代理 Twemproxy 与 Codis 掰开揉碎对比,再顺势引出 Redis 6.0 的 IO 多线程模型——它虽然没改变“命令单线程执行”的语义,却彻底动摇了“代理唯一出路”的假设。可见,IO 线程让单实例吞吐直接翻倍,再横向扩展 32 分片即可轻松突破 2000 万 qps,代理层存在的最大理由——“单实例扛不住”——被釜底抽薪。扩容必须重启代理,导致所有连接闪断。• io_threads_list[id]:每个 IO 线程独占的循环数组,避免跨线程锁。原创 2025-09-27 07:33:54 · 654 阅读 · 0 评论 -
15.Cluster 分片——16384 slot 映射 & CRC16 算法,横向扩容 3 → 5 主节点
完成扩容后,集群进入 5-master 时代,接下来就可以按需给每个主节点挂载从节点,或者继续 horizontal scaling 到 9、17、33 …15. Cluster 分片——16384 slot 映射 & CRC16 算法,横向扩容 3 → 5 主节点。(基于上一篇的 3-master 环境,目标:在线平滑扩展到 5-master,零业务中断)crc16 表驱动实现,对 1 M 随机 key 测试,最大偏差仅 0.8%,完全均匀。此时 M4/M5 没有 slot,角色为 master。原创 2025-09-26 22:35:42 · 632 阅读 · 0 评论 -
14.Sentinel——3 节点哨兵搭建,手动 kill -9 主库验证切换 < 30 s
14.Sentinel——3 节点哨兵搭建,手动 kill -9 主库验证切换 < 30 s(基于上一篇 1-Master-2-Slave 环境,Redis 7.2.4,CentOS 7.9)kill -9拓扑回顾。原创 2025-09-26 21:20:17 · 1136 阅读 · 0 评论 -
13.复制 Replication——psync2 部分同步流程,读写分离 + 延迟监控
(接上文「12. 复制握手与全量同步」结尾:当 7001 完成 RDB 传输并进入增量命令转发阶段后,本节讨论 7001 与 7002 之间网络闪断又恢复时,如何只补发“缺口”而不再传 6 GB RDB,以及业务侧如何利用这套机制做读写分离与秒级延迟监控。,看如何把一个 12 GB RDB 的传输时间从 120 s 压到 40 s,并保证零明文落盘。原创 2025-09-24 22:39:47 · 738 阅读 · 0 评论 -
12.持久化——RDB 全量快照 fork 写实复制,AOF 追加写入 & rewrite 触发
上一篇把「为什么 Redis 不能当 DB」聊到了「单机数据安全」这一层,但留了一个尾巴:RDB 与 AOF 到底怎么落地、各自有什么隐形代价、线上到底怎么选。本节把镜头拉近,直接拆源码、拆内核、拆生产故障,一次性把「持久化」最后一层窗户纸捅破。原创 2025-09-24 22:23:15 · 1514 阅读 · 0 评论 -
11.GEO & Stream——附近的人 5 km 查询,消息队列 Stream 实现 ACK
11. GEO & Stream——附近的人 5 km 查询,消息队列 Stream 实现 ACK(接上文《10. 千万级关注列表,Redis 真的比 MySQL 快吗?》)原创 2025-09-21 17:02:51 · 733 阅读 · 0 评论 -
10.HyperLogLog / Bitmap / BitField——UV 统计 1 亿用户 < 16 KB,日历签到 365 天 < 46 B
HyperLogLog 把“去重”压到 16 KB,Bitmap 把“日历”压到 46 B,BitField 把“连续”压成一条指令。在 Redis 的世界里,“大”数据从来不是绝对体积,而是你能把多少信息塞进多小的常量空间。更多技术文章见公众号: 大城市小农民。原创 2025-09-21 15:10:45 · 1035 阅读 · 0 评论 -
9.有序集合 ZSet——跳表 + dict 双端口图解,排行榜 + 范围删除
ZSet 的“跳表 + dict”双端口是 Redis。场景下仍让 Redis 保持 10 µs 级别的响应。所有写操作(ZADD/ZREM/ZINCRBY)必须。理解双端口一致性、span 用法与内存布局,就能在。,因为 Redis 命令本身单线程执行。Redis 的 ZSet 既要支持。于是 Redis 3.0 之后采用。需求:每日 0 点刷新,支持。(O(1)),又要支持。原创 2025-09-20 07:19:59 · 850 阅读 · 0 评论 -
8.集合 Set——intset / hashtable 编码切换,共同关注 & 抽奖算法
时间复杂度 = O(N·M)(N、M 为集合大小),在 5k×3k 规模下,Redis 3.2 单线程实测 15 ms,QPS 掉下 60。一旦升级到 hashtable,即使后续把所有非整型元素删除、个数降到 512 以下,Redis 也不会回退到 intset。线上 10w 规模抽 3 个,SRANDMEMBER 3 次即可,单次 1.2 µs,总耗时 < 5 µs,内存零拷贝。把这条思路映射到业务,就能在「共同关注」「抽奖」等高频场景里,既守住内存,又保住延迟。// 柔性数组,元素紧排。原创 2025-09-20 06:56:47 · 498 阅读 · 0 评论 -
7.字典 Hash——渐进式 rehash 流程,百万 field Big-Key 拆分策略
(承接上一篇对 Redis 字典底层结构的剖析,本章把镜头对准“字典扩容”与“Big-Key 拆分”这两个在生产环境高频出现的痛点:前者决定 Redis 是否会在毫秒级卡顿,后者决定你的内存是否会在某个凌晨 3 点被一只 400 MB 的 Hash 一把打爆。650 µs 已接近 Redis 单线程“安全毛刺”上限(1 ms 内必须返回事件循环),因此 Big-Key 在 rehash 期间产生的延迟放大效应不可忽视。在 80 万 field 面前,650 µs 的毛刺就是压垮 SLA 的最后一根稻草。原创 2025-09-19 22:10:30 · 976 阅读 · 0 评论 -
6.列表——ziplist ↔ linkedlist ↔ quicklist 演进,微博时间线练习
6. 列表——ziplist ↔ linkedlist ↔ quicklist 演进,微博时间线练习(接上文 5. 哈希 末尾“下一节我们把镜头对准列表”)原创 2025-09-18 21:06:31 · 818 阅读 · 0 评论 -
5.字符串深度——SDS 内部结构图解,编码 int / embstr / raw 触发阈值
redisObject 与 sds header+buf 在同一块 64 B 的连续内存里,一次性 malloc。5. 字符串深度——SDS 内部结构图解,编码 int / embstr / raw 触发阈值。(无sds) (sds+object同块) (sds独立堆块)长度 ≥45 字节,或后续被修改(append、setrange 等)。object 本身 16 B,ptr 直接存储数值,不分配 sds。长度 ≤44 字节(7.2 之前是 39),且不能解析为 long。原创 2025-09-18 19:48:55 · 751 阅读 · 0 评论 -
4.图形化客户端——Another Redis Desktop Manager 安装,1 万条模拟数据导入
4. 图形化客户端——Another Redis Desktop Manager 安装,1 万条模拟数据导入(基于上一篇“CentOS 7 源码编译 Redis 7.2”的同一台服务器)4.1 为什么选 Another Redis Desktop Manager4.2 安装步骤(CentOS 7 最小化环境)官方提供 AppImage 包,一条命令即可,不需要 root,也不污染系统库。原创 2025-09-18 19:41:25 · 732 阅读 · 0 评论 -
3.10条 必备指令——SET / GET / INCR / DECR,LPUSH / RPOP / LRANGE,HSET / HGETALL,EXPIRE / TTL
ffffffffffff# 3.10 条必备指令——SET / GET / INCR / DECR,LPUSH / RPOP / LRANGE,HSET / HGETALL,EXPIRE / TTL上一篇我们把 Redis 安装起来、用 docker-compose 搭好了可伸缩的集群,也跑通了第一个。从这一节开始,我们真正进入“每日必敲”的 10 条原子指令。它们没有花哨的缩写,却是 90% 业务代码的骨架;记住这 10 个,就能覆盖缓存、计数器、队列、映射表、失效策略五大高频场景。原创 2025-09-17 20:58:33 · 580 阅读 · 0 评论 -
2.极速体验课——3 分钟官网下载编译,redis-server / redis-cli 第一次对话
下一节我们把这个裸进程拆成“单线程模型 + 事件循环”,让你看到 10 万 qps 是怎么跑在一条线程上的。2. 极速体验课——3 分钟官网下载编译,redis-server / redis-cli 第一次对话。(适用于 macOS / Linux / WSL,全程命令行,无 IDE,不碰配置文件)源码→编译→启动→对话→守护→验证,全程 7 条命令,180 秒内完成。看到 redis-server 在监听,体验课毕业。硬盘不留痕,下次想玩再重来。原创 2025-09-17 20:42:07 · 1121 阅读 · 0 评论 -
1.Redis 身世与定位——为什么会出现 Redis,内存数据库 vs 磁盘数据库 vs 缓存
而是它把“内存速度”“磁盘可靠性”“丰富数据结构”“极简运维”四个原本互斥的指标,首次打包进一个开箱即用的二进制文件。磁盘数据库是“账本”,缓存是“便签”,而 Redis 是“带自动存档的便签,还能当草稿纸、当信封、当计算器”。内存数据库 = “把缓存的延迟和磁盘数据库的持久化缝在一起,再用丰富的数据结构把业务逻辑下沉到数据层”。当业务流量大到“便签”不够用、“账本”又太笨重时,Redis 就成了架构里绕不过去的“第三存储”。把数据放在哪里,本质上是在“容量、速度、成本、可靠性”四象限里找落点。原创 2025-09-17 20:28:07 · 1069 阅读 · 0 评论
分享