首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Redis入门|五种数据结构、使用场景、持久化RDBAOF
📅 2026/10/31 10:56:40
✍️ 爱科研究院
👁 阅读 3,247
前言RedisRemote Dictionary Server基于 C 语言开发的内存键值数据库。数据主要放在内存所以读写性能极高单机 QPS 可达十万级别。 很多人以为 Redis 只能做缓存其实它能力很强分布式锁、计数器、限流、消息队列、排行榜都可以实现。核心特点内存存储高性能单线程模型Redis6.0 之后多线程处理 IO命令执行依旧单线程串行丰富的数据结构支持持久化可以把内存数据落盘支持主从复制、哨兵、集群实现高可用。注意Redis 的单线程指命令执行模块单线程网络 IO、持久化、删除大 key 等操作是多线程。一、五种常用数据结构 业务场景1. String 字符串最基础底层简单动态字符串 SDS 命令示例set name zhangsan get name incr count # 原子自增适用场景普通缓存用户信息、商品基础信息计数器文章阅读量、点赞数incr原子操作分布式 Session 共享简单限流记录用户访问次数。坑value 不宜过大建议控制 10KB 以内大 key 会影响性能。2. List 列表底层双向链表quicklist有序允许重复元素可以头插、尾插。 命令lpush list1 a b rpop list1 lrange list1 0 -1适用场景简单消息队列lpush rpop最新消息列表首页最新动态时间轴朋友圈消息。缺点消息丢失、重复消费问题生产业务消息队列优先 MQList 只适合简单临时场景。3. Hash 哈希key 对应一个 map 结构存储多个 field-value。类似 Java 里 HashMap。hset user:1001 name lisi age 20 hget user:1001 name hgetall user:1001适用场景对象存储用户信息、商品信息只需要修改某个字段不用整体更新购物车用户 id 作为 key商品 id 为 field数量为 value。对比 String如果用 String 存对象修改单个字段需要序列化 / 反序列化整个对象Hash 可以单独更新 field。4. Set 集合无序元素不允许重复。支持交集、并集、差集。sadd set1 a b c smembers set1 sinter set1 set2 # 交集适用场景去重点赞用户保证一人只能点赞一次共同好友交集抽奖活动随机抽取元素。5. Sorted SetZSet 有序集合元素不可重复每个元素带一个 score 分数根据 score 自动排序。zadd rank 90 tom 80 jack zrange rank 0 -1 withscores zrevrange rank 0 -1 withscores # 倒序适用场景排行榜直播间热度、商品销量、积分排行榜延时任务score 存时间戳带权重的队列。二、Redis 持久化RDB AOFRedis 是内存数据库重启后内存数据丢失。持久化就是把内存数据保存到磁盘重启恢复数据。两种方案RDB、AOF可以单独开启也可以同时开启。2.1 RDBRedis DataBaseRDB 是快照持久化在某个时间点把内存中全部数据生成一份二进制.rdb文件保存到磁盘。触发方式手动触发save主线程阻塞、bgsavefork 子进程后台执行推荐自动触发配置文件save 900 1900 秒至少 1 个 key 改动则执行 bgsave。bgsave 原理调用 fork 创建子进程子进程拷贝父进程内存页写时复制 COW子进程把数据写入 rdb 文件主线程继续处理请求。RDB 优点文件体积小二进制压缩适合做备份恢复速度快故障重启加载 rdb 很快fork 子进程主线程不阻塞bgsave。RDB 缺点丢失最后一次快照之后的数据两次快照之间宕机这段时间数据丢失fork 子进程当数据量巨大时fork 会短暂阻塞主线程无法做到实时持久化。2.2 AOFAppend Only FileAOF日志追加持久化。记录每一条写命令以文本形式追加到 aof 日志文件。Redis 重启时重新执行 AOF 里所有命令恢复数据。AOF 默认关闭需要手动开启appendonly yesAOF 刷盘策略appendfsyncalways每一条写命令都刷盘。安全性最高几乎不丢数据性能最差。everysec默认每秒刷一次磁盘。最多丢失 1 秒数据推荐配置平衡性能和安全。no交给操作系统自行刷盘性能最好丢失数据最多。AOF 重写机制AOF 文件持续追加文件越来越大。Redis 自动触发 AOF Rewrite把多条命令合并成一条压缩 AOF 文件不会丢失数据。重写也是 fork 子进程完成。AOF 优点数据安全性更高everysec 最多丢 1 秒数据日志文本格式可读性强。AOF 缺点文件体积比 RDB 大很多数据恢复速度比 RDB 慢AOF 重写也会 fork 子进程大数据量有阻塞风险。2.3 RDB AOF 同时开启生产推荐Redis 重启优先加载 AOF 文件AOF 数据更完整RDB 做冷备份AOF 保障实时数据组合方案兼顾备份能力与数据安全。三、三大缓存经典问题3.1 缓存穿透请求查询不存在的数据缓存没有命中请求全部打到数据库。大量请求压垮 DB。解决方案缓存空值布隆过滤器拦截不存在 key。3.2 缓存击穿热点 key 过期大量并发请求瞬间打到数据库。解决方案互斥锁热点 key 永不过期。3.3 缓存雪崩大量 key 在同一时间集体过期或者 Redis 宕机大量请求全部访问数据库数据库压力瞬间崩溃。解决方案过期时间增加随机值打散过期时间Redis 高可用主从 哨兵 / 集群限流熔断多级缓存。四、生产环境最佳实践合理设计 key规范命名不要过长规避大 key大 key 读写阻塞 Redis持久化线上一般开启 AOF everysec RDB 定时备份禁止使用 keys 命令大数据量下阻塞主线程用 scan 代替设置内存淘汰策略maxmemory-policy主从、哨兵、集群保证高可用缓存数据设置过期时间不要无限存放。五、面试高频问答Q1Redis 单线程模型怎么理解ARedis 命令执行是单线程串行执行IO、持久化等操作多线程。单线程避免锁竞争配合内存操作性能很高。Q2RDB 和 AOF 区别ARDB 是时间点快照文件小恢复快会丢失快照间隔数据AOF 记录写命令日志安全性更高文件大恢复慢。线上推荐两者同时开启。Q3五种数据结构分别适用场景AString 做计数器、基础缓存List 简单消息队列Hash 存储对象Set 去重、交集ZSet 排行榜。Q4AOF 重写是什么为什么需要AAOF 持续追加文件越来越大AOF 重写合并命令压缩日志体积不影响原有 AOF 日志。Q5缓存雪崩、击穿、穿透三者区别A穿透查不存在数据击穿单个热点 key 过期雪崩大量 key 同时过期。结语Redis 不只是简单缓存组件丰富的数据结构让它可以实现很多业务能力。持久化 RDB 与 AOF 是核心考点要理解两者的取舍RDB 适合备份AOF 保障数据安全。同时一定要掌握缓存三大问题这是 Redis 高频提问。使用 Redis 最重要的是内存数据库做好持久化、内存控制、规避大 key。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/31 10:51:39
STM32心率血氧手环
2026/10/31 10:51:39
STM32智能厨房安全检测系统
2026/10/31 10:51:39
STM32智能宠物喂食系统
2026/10/31 11:36:48
CDFS光盘复制文件指南:只读原理、镜像备份与校验修复
2026/10/31 11:36:48
Android Studio安装配置全指南:从准备到优化
2026/10/31 11:36:48
扩散模型对抗样本:原理、攻击方法与防御策略
2026/10/31 11:36:48
CCF-CSP历年真题机试训练:题面拆解、算法选型与建模
2026/10/31 11:36:47
分布式事务核心原理:2PC协议与并发控制实践
2026/10/31 11:31:47
专科生如何高效获取AI论文资源与学习策略
2026/10/31 0:00:18
猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包
2026/10/31 0:00:18
HDU2017多校标程复现:算法竞赛工程化真题沙盒
2026/10/31 0:00:18
Codex Sandbox 隔离环境拆解:AI Agent 的临时实验室如何运作
2026/10/31 0:57:03
全国计算机二级C语言真题PDF高效刷题指南
2026/10/31 0:56:56
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/30 21:48:31
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)