Redis 共 36 篇文章

Redis的布隆过滤器与缓存穿透防护
2026-06-01 20:11:20
标题:Redis的布隆过滤器与缓存穿透防护 理解问题:什么是缓存穿透? 理解 缓存穿透的定义。当应用系统请求一个在缓存(如Redis)和数据库中都不存在的数据时,这个请求会直接“穿透”缓存层,每次都打到数据库。如果这种请求量很大,会对数据库造成巨大压力,甚至导致服务崩溃。 想象 这个场景:系统缓存了
Redis 布隆过滤器 缓存穿透
22 0
Redis Lua脚本的原子性保证与性能优化
2026-05-30 02:19:42
Redis Lua脚本的原子性保证与性能优化 在处理高并发业务场景时,常常需要多个命令作为一个整体执行,并要求极高的性能。Redis的Lua脚本正是解决这类问题的利器。本文将直接切入核心,讲解如何保证其原子性并优化性能,提供可立即应用的实践方案。 第一部分:理解原子性保证 Redis使用单线程模型执
Redis Lua脚本 原子性
29 0
Redis RDB 的 fork 写时复制 COW 在超大内存实例中的停顿风险
2026-05-27 16:24:17
Redis RDB 的 fork 写时复制 COW 在超大内存实例中的停顿风险 Redis 作为高性能内存数据库,其持久化机制中的 RDB(快照)方案依赖 fork 系统调用创建子进程。fork 结合写时复制(CopyOnWrite,COW)技术,本意是避免子进程复制父进程整个内存空间,从而节省内存
Redis RDB fork
32 0
Redis SCAN 命令基于高位进位的游标遍历为何能避免重复与阻塞
2026-05-27 03:24:00
Redis SCAN 命令基于高位进位的游标遍历为何能避免重复与阻塞 REmote DIctionary Server Redis 提供 KEYS 命令用于查找匹配模式的键。但 KEYS 会一次性返回所有匹配的键,在键数量巨大时导致服务器阻塞,无法处理其他请求。SCAN 命令应运而生:它通过基于高位
Redis SCAN命令 高位进位
34 0
Redis Sorted Set 底层跳表实现范围查询的时间复杂度与层级概率
2026-05-26 23:38:42
Redis Sorted Set 底层跳表实现范围查询的时间复杂度与层级概率 1. 跳表(Skip List)概述 Redis 的 Sorted Set 在元素数量较多或元素长度较大时,底层使用 跳表(skiplist) 作为有序集合的存储结构。跳表是一种基于并行链表的概率性数据结构,通过维护多层索
Redis 跳表 范围查询
32 0
Redis大Key删除导致主线程阻塞的解决方案
2026-05-16 09:11:09
Redis大Key删除导致主线程阻塞的解决方案 Redis作为高性能缓存系统,采用单线程模型处理命令。当直接删除一个包含数百万元素的Big Key(大键)时,Redis主线程必须执行大量的内存回收操作,导致线程长时间阻塞,无法处理其他请求,甚至引发服务超时或集群故障。解决此问题的核心在于将阻塞操作异
Redis 大Key 主线程阻塞
65 0
Redis MEMORY USAGE命令精确计算Key的内存占用
2026-05-15 00:15:45
Redis MEMORY USAGE命令精确计算Key的内存占用 在性能调优或成本分析过程中,准确掌握单个 Key 的内存消耗是排查“大 Key”问题的核心能力。Redis 提供的 MEMORY USAGE 命令能够直接返回 Key 在内存中占用的字节数,无需依赖估算或第三方工具。 一、 基础操作:
Redis 内存占用 性能调优
55 0
Redis过期Key删除策略:惰性删除与定期删除的配合机制
2026-05-13 12:16:33
Redis过期Key删除策略:惰性删除与定期删除的配合机制 Redis服务器之所以能保持高性能,关键在于它不会在Key过期的瞬间立即执行删除操作,而是采用了一套精密的“惰性删除”与“定期删除”配合机制。这套机制完美平衡了CPU计算资源与内存空间资源。 一、 理解“惰性删除”机制 惰性删除是Redis
Redis 过期策略 惰性删除
59 0
Redis OBJECT FREQ查看Key的LFU访问频次
2026-05-11 15:43:15
Redis OBJECT FREQ查看Key的LFU访问频次 Redis的OBJECT FREQ命令用于查看指定Key的LFU(Least Frequently Used,最不经常使用)访问频率。这个命令在Redis的内存淘汰策略为LFU时特别有用,可以帮助你了解哪些Key被访问得最频繁,哪些相对较
Redis LFU 内存淘汰策略
67 0
Redis热Key问题导致单节点压力过大的拆分策略
2026-05-11 10:52:00
Redis热Key问题导致单节点压力过大的拆分策略 当Redis集群中的某个Key被频繁访问,导致该Key所在的节点CPU、内存或网络带宽使用率远超其他节点时,我们就称这个Key为“热Key”。热Key问题会直接造成单节点性能瓶颈,影响整个系统的稳定性和响应速度。本文将提供一套完整的拆分策略,帮助你
Redis 热Key 性能优化
55 0
Redis ZSet底层跳表与压缩列表的切换条件
2026-05-10 21:27:16
Redis ZSet底层跳表与压缩列表的切换条件 Redis的有序集合(Sorted Set,简称ZSet)是一种非常强大的数据结构,它结合了哈希表和跳表的优点,既能通过键快速定位,又能对成员进行排序。ZSet的底层实现并非一成不变,它会根据数据规模和元素大小,在压缩列表(ziplist)和跳表(s
Redis ZSet 跳表
56 0
Redis Pub/Sub消息丢失的原因与Stream的持久化替代
2026-05-10 20:25:54
Redis Pub/Sub 消息丢失的原因与 Stream 的持久化替代 Redis 的 Pub/Sub(发布/订阅)模式是构建实时消息系统的常用工具。它允许发布者将消息发送到频道,而所有订阅该频道的订阅者都能收到消息。然而,它有一个致命的弱点:消息可能丢失。本文将深入分析 Redis Pub/Su
Redis Pub/Sub 消息丢失
72 0
Redis LMPOP同时弹出多个列表元素的原子操作
2026-05-10 17:18:39
Redis LMPOP同时弹出多个列表元素的原子操作 Redis的LMPOP命令是6.2版本引入的新功能,用于从多个列表中原子性地弹出元素。原子操作确保在多线程环境下数据的一致性,避免竞态条件。本文将手把手教你如何使用LMPOP高效处理列表数据。 1. 理解LMPOP命令 LMPOP命令可以从多个列
Redis LMPOP 原子操作
51 0
Redis pipeline批量操作与事务MULTI的区别
2026-05-09 18:25:49
Redis pipeline批量操作与事务MULTI的区别 一、Redis Pipeline简介 Pipeline(管道)是Redis提供的一种批量操作机制,通过减少客户端与服务器之间的网络往返次数,显著提升批量命令的执行效率。传统模式下,每个Redis命令都需要独立发送并等待响应,而Pipelin
Redis Pipeline 事务
48 0
Redis OBJECT ENCODING查看数据结构底层编码类型
2026-05-07 12:16:05
Redis 中的 5 种基础数据类型(String、List、Hash、Set、ZSet)在底层实现上并不单一。为了平衡内存占用与读写性能,Redis 会根据数据量的大小、元素的长度等因素,自动在多种底层数据结构(编码类型)之间进行切换。理解这些编码类型是进行 Redis 性能调优和内存优化的关键。
Redis 数据结构 底层编码
68 0
Redis命令执行为什么是单线程但还能这么快
2026-05-07 09:29:08
Redis命令执行为什么是单线程但还能这么快 Redis 之所以在单线程模式下依然能保持极高的性能,是因为它通过精心的系统设计,规避了传统多线程编程中的主要开销,并充分利用了内存操作的高效性。要深入理解这一机制,我们需要按照以下步骤分析其核心运作原理。 1. 认识性能瓶颈的真相 首先,我们需要明确一
Redis 单线程 IO多路复用
53 0
Redis主从复制延迟导致数据不一致的处理策略
2026-05-07 04:17:13
Redis主从复制延迟导致数据不一致的处理策略 Redis 采用“主从复制”模式来保证高可用和读写分离。默认情况下,主节点负责写,从节点负责读。由于复制是异步进行的,主节点写入数据后,需要一点时间才能同步到从节点。如果在这段时间差内,用户立刻去从节点读取数据,就会读到“旧数据”,这就是主从延迟导致的
Redis 主从复制 数据一致性
49 0
Redis FUNCTION LOAD注册Lua函数库的持久化
2026-05-05 12:18:21
Redis FUNCTION LOAD注册Lua函数库的持久化 在 Redis 7 及更高版本中,FUNCTION LOAD 命令引入了函数库的概念,相较于旧的 EVAL 和 SCRIPT LOAD,它提供了更好的代码组织方式和复用性。然而,仅仅将函数加载到内存中并不足以应对服务器重启。为了确保 L
Redis Lua脚本 函数库
52 0
Redis Bitmap位图实现签到统计的存储优化
2026-05-04 03:13:06
Redis Bitmap位图实现签到统计的存储优化 在需要处理海量用户每日签到数据的场景中,传统的数据库存储方案往往会因为记录数过多导致查询缓慢和存储空间膨胀。使用 Redis 的 Bitmap(位图)数据结构,可以将每一个用户的签到状态压缩为一个二进制位(Bit),从而极大地降低内存占用并提升统计
Redis Bitmap 签到统计
55 0
Redis Stream消息队列与Pub/Sub发布订阅的区别
2026-05-03 02:26:52
Redis Stream消息队列与Pub/Sub发布订阅的区别 在 Redis 中处理消息传递时,开发者经常面临两种选择:Pub/Sub(发布订阅)和 Stream(流)。虽然两者都能实现消息的转发,但它们的底层逻辑和适用场景截然不同。简单来说,Pub/Sub 像是“广播电台”,而 Stream 像
Redis 消息队列 发布订阅
44 0