标签: redis

13 篇文章

Redis如何保证缓存与数据库的数据一致性?
Redis缓存与数据库的数据一致性是分布式系统中的一个经典挑战。没有完美的通用方案,只有针对特定场景的权衡选择。以下是主要的策略、场景分析和实践建议: 一、核心策略模式 1. Cache-Aside(旁路缓存) 最常见的模式,由应用层控制缓存: // 读流程 1. 读缓存,命中则返回 2. 未命中则读数据库 3. 写入缓存后返回 // 写流程 1.…
Redis的zset底层为什么用跳表而非B+树?
Redis 的 zset(有序集合)底层使用跳表(skip list)而非 B+ 树,主要基于以下几个方面的考量: 1. 实现复杂度 跳表的实现相对简单,代码量少,易于维护和调试。 B+ 树结构复杂,需要处理节点分裂、合并、重新平衡等操作,实现难度较大。 2. 内存性能表现 Redis 是内存数据库,数据完全存储在内存中。跳表作为纯内存数据结构,其…
Redis 为什么要自定义 SDS?
Redis 自己实现 SDS(Simple Dynamic String)主要是为了克服 C 语言原生字符串在性能、安全性和功能性上的局限,以满足其作为高性能数据库的苛刻要求。 下表清晰地展示了 SDS 与 C 字符串的核心差异: 对比维度C 字符串Redis SDS获取长度复杂度​O(N),需遍历直到 \0O(1),直接读取 len属性缓冲区溢出…