Redis 共 40 篇文章

Redis Bloom Filter布隆过滤器在缓存穿透防护中的误判率
2026-06-20 09:42:18
Redis Bloom Filter布隆过滤器在缓存穿透防护中的误判率 缓存穿透是一个典型问题:请求的数据在缓存和数据库中都不存在,导致每次请求都穿透缓存,直击数据库。恶意攻击者可以利用这点,用大量不存在的ID进行查询,压垮数据库。布隆过滤器(Bloom Filter)是拦截这类请求的利器,但它有一
Redis 布隆过滤器 缓存穿透
37 0
Redis GeoHash地理位置编码与GEOSEARCH指令原理
2026-06-20 00:43:28
Redis GeoHash地理位置编码与GEOSEARCH指令原理 Redis 通过一套 GEO 命令,提供了高效的地理位置存储与查询能力。其核心是将经纬度坐标映射为一种可排序、可比较的编码(GeoHash),并利用 Redis 有序集合(Sorted Set)进行存储,从而实现半径查询、距离计算等
Redis GeoHash GEOSEARCH
49 0
Redis Sorted Set实现排行榜的内存与性能优化
2026-06-15 00:43:47
Redis Sorted Set实现排行榜的内存与性能优化 Redis Sorted Set 有序集合,简称 ZSet 是实现排行榜功能的利器,它通过 score 为每个元素提供自动排序。然而,当数据量激增(如百万用户)或需要毫秒级响应时,直接使用往往面临内存占用过高和性能瓶颈。本指南将提供一套清晰
Redis 排行榜 内存优化
69 0
Redis Bitmap实现亿级用户签到统计的内存优化
2026-06-13 15:37:58
Redis Bitmap实现亿级用户签到统计的内存优化 为什么传统方案行不通? 为亿级用户(如1亿)存储每日签到状态,最直观的方法是为每位用户创建一个记录。使用传统关系型数据库,一张表可能包含 userid、date、issigned 等字段。即使 issigned 用最小的 TINYINT1 类型
Redis Bitmap 签到统计
59 0
Redis的布隆过滤器与缓存穿透防护
2026-06-01 20:11:20
标题:Redis的布隆过滤器与缓存穿透防护 理解问题:什么是缓存穿透? 理解 缓存穿透的定义。当应用系统请求一个在缓存(如Redis)和数据库中都不存在的数据时,这个请求会直接“穿透”缓存层,每次都打到数据库。如果这种请求量很大,会对数据库造成巨大压力,甚至导致服务崩溃。 想象 这个场景:系统缓存了
Redis 布隆过滤器 缓存穿透
76 0
Redis Lua脚本的原子性保证与性能优化
2026-05-30 02:19:42
Redis Lua脚本的原子性保证与性能优化 在处理高并发业务场景时,常常需要多个命令作为一个整体执行,并要求极高的性能。Redis的Lua脚本正是解决这类问题的利器。本文将直接切入核心,讲解如何保证其原子性并优化性能,提供可立即应用的实践方案。 第一部分:理解原子性保证 Redis使用单线程模型执
Redis Lua脚本 原子性
86 0
Redis RDB 的 fork 写时复制 COW 在超大内存实例中的停顿风险
2026-05-27 16:24:17
Redis RDB 的 fork 写时复制 COW 在超大内存实例中的停顿风险 Redis 作为高性能内存数据库,其持久化机制中的 RDB(快照)方案依赖 fork 系统调用创建子进程。fork 结合写时复制(CopyOnWrite,COW)技术,本意是避免子进程复制父进程整个内存空间,从而节省内存
Redis RDB fork
100 0
Redis SCAN 命令基于高位进位的游标遍历为何能避免重复与阻塞
2026-05-27 03:24:00
Redis SCAN 命令基于高位进位的游标遍历为何能避免重复与阻塞 REmote DIctionary Server Redis 提供 KEYS 命令用于查找匹配模式的键。但 KEYS 会一次性返回所有匹配的键,在键数量巨大时导致服务器阻塞,无法处理其他请求。SCAN 命令应运而生:它通过基于高位
Redis SCAN命令 高位进位
87 0
Redis Sorted Set 底层跳表实现范围查询的时间复杂度与层级概率
2026-05-26 23:38:42
Redis Sorted Set 底层跳表实现范围查询的时间复杂度与层级概率 1. 跳表(Skip List)概述 Redis 的 Sorted Set 在元素数量较多或元素长度较大时,底层使用 跳表(skiplist) 作为有序集合的存储结构。跳表是一种基于并行链表的概率性数据结构,通过维护多层索
Redis 跳表 范围查询
93 0
Redis大Key删除导致主线程阻塞的解决方案
2026-05-16 09:11:09
Redis大Key删除导致主线程阻塞的解决方案 Redis作为高性能缓存系统,采用单线程模型处理命令。当直接删除一个包含数百万元素的Big Key(大键)时,Redis主线程必须执行大量的内存回收操作,导致线程长时间阻塞,无法处理其他请求,甚至引发服务超时或集群故障。解决此问题的核心在于将阻塞操作异
Redis 大Key 主线程阻塞
121 0
Redis MEMORY USAGE命令精确计算Key的内存占用
2026-05-15 00:15:45
Redis MEMORY USAGE命令精确计算Key的内存占用 在性能调优或成本分析过程中,准确掌握单个 Key 的内存消耗是排查“大 Key”问题的核心能力。Redis 提供的 MEMORY USAGE 命令能够直接返回 Key 在内存中占用的字节数,无需依赖估算或第三方工具。 一、 基础操作:
Redis 内存占用 性能调优
127 0
Redis过期Key删除策略:惰性删除与定期删除的配合机制
2026-05-13 12:16:33
Redis过期Key删除策略:惰性删除与定期删除的配合机制 Redis服务器之所以能保持高性能,关键在于它不会在Key过期的瞬间立即执行删除操作,而是采用了一套精密的“惰性删除”与“定期删除”配合机制。这套机制完美平衡了CPU计算资源与内存空间资源。 一、 理解“惰性删除”机制 惰性删除是Redis
Redis 过期策略 惰性删除
121 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 内存淘汰策略
120 0
Redis热Key问题导致单节点压力过大的拆分策略
2026-05-11 10:52:00
Redis热Key问题导致单节点压力过大的拆分策略 当Redis集群中的某个Key被频繁访问,导致该Key所在的节点CPU、内存或网络带宽使用率远超其他节点时,我们就称这个Key为“热Key”。热Key问题会直接造成单节点性能瓶颈,影响整个系统的稳定性和响应速度。本文将提供一套完整的拆分策略,帮助你
Redis 热Key 性能优化
113 0
Redis ZSet底层跳表与压缩列表的切换条件
2026-05-10 21:27:16
Redis ZSet底层跳表与压缩列表的切换条件 Redis的有序集合(Sorted Set,简称ZSet)是一种非常强大的数据结构,它结合了哈希表和跳表的优点,既能通过键快速定位,又能对成员进行排序。ZSet的底层实现并非一成不变,它会根据数据规模和元素大小,在压缩列表(ziplist)和跳表(s
Redis ZSet 跳表
124 0
Redis Pub/Sub消息丢失的原因与Stream的持久化替代
2026-05-10 20:25:54
Redis Pub/Sub 消息丢失的原因与 Stream 的持久化替代 Redis 的 Pub/Sub(发布/订阅)模式是构建实时消息系统的常用工具。它允许发布者将消息发送到频道,而所有订阅该频道的订阅者都能收到消息。然而,它有一个致命的弱点:消息可能丢失。本文将深入分析 Redis Pub/Su
Redis Pub/Sub 消息丢失
151 0
Redis LMPOP同时弹出多个列表元素的原子操作
2026-05-10 17:18:39
Redis LMPOP同时弹出多个列表元素的原子操作 Redis的LMPOP命令是6.2版本引入的新功能,用于从多个列表中原子性地弹出元素。原子操作确保在多线程环境下数据的一致性,避免竞态条件。本文将手把手教你如何使用LMPOP高效处理列表数据。 1. 理解LMPOP命令 LMPOP命令可以从多个列
Redis LMPOP 原子操作
95 0
Redis pipeline批量操作与事务MULTI的区别
2026-05-09 18:25:49
Redis pipeline批量操作与事务MULTI的区别 一、Redis Pipeline简介 Pipeline(管道)是Redis提供的一种批量操作机制,通过减少客户端与服务器之间的网络往返次数,显著提升批量命令的执行效率。传统模式下,每个Redis命令都需要独立发送并等待响应,而Pipelin
Redis Pipeline 事务
106 0
Redis OBJECT ENCODING查看数据结构底层编码类型
2026-05-07 12:16:05
Redis 中的 5 种基础数据类型(String、List、Hash、Set、ZSet)在底层实现上并不单一。为了平衡内存占用与读写性能,Redis 会根据数据量的大小、元素的长度等因素,自动在多种底层数据结构(编码类型)之间进行切换。理解这些编码类型是进行 Redis 性能调优和内存优化的关键。
Redis 数据结构 底层编码
127 0
Redis命令执行为什么是单线程但还能这么快
2026-05-07 09:29:08
Redis命令执行为什么是单线程但还能这么快 Redis 之所以在单线程模式下依然能保持极高的性能,是因为它通过精心的系统设计,规避了传统多线程编程中的主要开销,并充分利用了内存操作的高效性。要深入理解这一机制,我们需要按照以下步骤分析其核心运作原理。 1. 认识性能瓶颈的真相 首先,我们需要明确一
Redis 单线程 IO多路复用
97 0