目录1. Redis 概述与核心特性1.1 什么是 Redis1.2 8 大重要特性1.3 为什么 Redis 这么快1.4 典型应用场景1.5 Redis 不适合做什么2. 版本演进关键点3. 全局命令与键管理4. 数据结构与内部编码4.1 对外数据结构 vs 内部编码4.2 查看内部编码OBJECT ENCODING key4.3 为什么要有多种内部编码5. 单线程模型5.1 什么是单线程5.2 为什么单线程能支撑高并发5.3 单线程的致命弱点5.4 引入多线程 I/O 后还是单线程吗1. Redis 概述与核心特性1.1 什么是 Redis基于键值对key-value的 NoSQL 数据库值支持多种数据结构string、hash、list、set、zset、Bitmaps、HyperLogLog、GEO 等数据全在内存中支持持久化RDB AOF、主从复制、哨兵高可用、集群分布式1.2 8 大重要特性特性说明速度快内存存储 C语言 单线程 精良源码基于键值对的数据结构服务器值可以是多种数据结构开发灵活功能丰富过期、发布订阅、Lua脚本、事务、Pipeline简单稳定源码少早期2万行单线程模型简单极少因自身BUG宕机客户端语言多几乎覆盖所有主流语言Java、Python、Go、Node…持久化RDB 快照 AOF 日志保证数据不丢失主从复制支持多个副本分布式基础高可用与分布式Sentinel 故障自动转移Cluster 真正分布式Redis 的发布订阅Pub/Sub是一种基于频道channel的消息广播机制发布者通过 PUBLISH 向指定频道发送消息所有已通过 SUBSCRIBE 订阅该频道的客户端都会实时收到消息也支持 PSUBSCRIBE 按模式订阅Redis 服务器充当消息中转站实现发布者与订阅者之间的解耦和一对多通信。其特点是轻量、实时、低延迟但消息不持久化、不保证可靠投递订阅者离线或断开期间的消息会丢失也没有 ACK 和消费组机制因此更适合实时通知、聊天、广播等允许丢失的场景若需要可靠消息通常应使用 Redis Stream 或专业消息队列1.3 为什么 Redis 这么快纯内存访问内存延迟约比磁盘快几个数量级非阻塞 I/O基于 epoll 的 I/O 多路复用将网络事件转化为事件驱动单线程模型避免线程切换和竞态消耗简化数据结构和算法C 语言实现更“接近”操作系统1.4 典型应用场景缓存键过期 淘汰策略排行榜有序集合 zset计数器视频播放数、电商浏览数社交网络赞/踩、粉丝、共同好友消息队列发布订阅 阻塞队列1.5 Redis 不适合做什么大规模冷数据内存成本极高不适合存储海量不常访问的数据复杂关系查询非关系型不适合 SQL 多表联查数据量极大且经济敏感如每天数亿用户行为用 Redis 存储是“无底洞”2. 版本演进关键点Redis 版本号规则第二位偶数 稳定版如 2.8、3.0、4.0、5.0、6.0、7.0奇数 开发版版本核心新特性2.6服务端 Lua 脚本毫秒级过期从节点只读2.8部分主从复制PSYNCSentinel 第二版生产可用3.0Redis Cluster官方分布式实现LRU 优化3.2GEO地理位置功能quicklist 编码4.0模块系统LFU淘汰算法异步删除unlinkRDB-AOF 混合持久化5.0Stream数据类型消息队列增强redis-cli 集群管理器从 Ruby 移植到 C6.0多线程 I/O但命令执行仍是单线程ACL 权限控制RESP3 协议客户端缓存7.0AOF 多文件存储RDB 版本升级至 10不兼容旧版listpack 替换 ziplistprotected-mode 默认开启6.0 的多线程仅用于网络读写和协议解析命令执行仍然单线程不需要担心并发安全问题3. 全局命令与键管理所有数据结构共用的命令注意其时间复杂度和使用注意事项命令作用时间复杂度注意KEYS pattern返回匹配模式的所有 keyO(N)生产环境禁用会阻塞 RedisEXISTS key判断 key 是否存在O(1)可同时检查多个返回存在的个数DEL key删除指定 keyO(1)删除大 key 时建议用UNLINK异步EXPIRE key seconds设置秒级过期时间O(1)返回 1 成功0 失败TTL key查看剩余过期时间秒O(1)-1 表示永不过期-2 表示 key 不存在TYPE key返回当前键对应 value 的对外数据类型O(1)返回值string, list, hash, set, zset, stream 等KEYS * 绝对不要在生产使用它会扫描全库阻塞所有命令。替代方案SCAN 游标迭代EXPIRE 和 TTL 还有毫秒版本 PEXPIRE / PTTL4. 数据结构与内部编码Redis 对外暴露 5 种数据类型但底层有多种内部编码根据场景动态切换4.1 对外数据结构 vs 内部编码数据结构可能的内部编码stringraw,int,embstrhashhashtable,ziplist7.0 后改为 listpacklistlinkedlist,ziplist3.2 后统一为quicklistsethashtable,intsetzsetskiplist,ziplist7.0 后改为 listpack4.2 查看内部编码OBJECT ENCODING key4.3 为什么要有多种内部编码解耦升级优化内部编码不影响外部命令如 3.2 引入 quicklist 用户无感知场景适配ziplist 节省内存但元素多时性能下降达到阈值会转为 hashtable 或 skiplist7.0 重要变化ziplist 被 listpack 替代且 RDB 版本升级至 10旧版 RDB 无法直接读取5. 单线程模型5.1 什么是单线程Redis 服务端命令执行是单线程的所有客户端请求排队依次处理微观上命令按到达顺序线性执行不存在两条命令同时执行5.2 为什么单线程能支撑高并发内存操作极快瓶颈不在 CPU 而在网络 I/O非阻塞 I/O 多路复用epoll将连接、读写、关闭注册为事件不浪费 CPU 等待无上下文切换和无锁竞争性能更稳定5.3 单线程的致命弱点单个命令执行时间过长会阻塞后续所有命令。因此严禁大 key 操作如 KEYS *、大集合交集等5.4 引入多线程 I/O 后还是单线程吗命令执行仍为单线程。多线程仅用于网络数据读写和协议解析所以并发安全性依然由单线程保证Redis 6.0 引入的多线程机制是一种混合式设计其核心是将网络 I/O 的读写操作交由多个 I/O 线程并行处理而命令的解析与执行依然由主线程单线程串行完成。具体来说主线程负责接收连接并将可读的 socket 通过轮询分发给 I/O 线程进行读取和解析随后主线程串行执行命令执行完毕后再由 I/O 线程将结果写回客户端。这一设计旨在解决高并发下网络 I/O 成为瓶颈的问题通过利用多核 CPU 提升网络数据的读写效率。由于命令执行阶段仍保持单线程所以它避免了多线程带来的数据竞争和并发安全问题在提升吞吐量的同时保留了单线程模型简单、原子性的优点。该特性默认关闭需通过 io-threads 等参数手动启用
企业数字化 ERP 产品动态
相关推荐
OpenCV计算机视觉开发入门与实践(基于C++):专栏内容介绍及目录 摘要: 本专栏基于 OpenCV 4.13 与 Qt C,系统讲解计算机视觉开发从入门到实战的完整路径。内容涵盖 OpenCV 基础概念、开发环境搭建、核心模块 Core、图像处理(灰度变换、滤波、边缘检测、图像分割)、视频处理、机器学习、物体计数… · 2026/9/27 11:32:38
顺德制作网站多少钱?不会代码也能搞定,避开这3个坑省一半钱 顺德制作网站多少钱?不会代码也能搞定,避开这3个坑省一半钱 自己不会代码,却想在顺德落地一个拿得出手的企业官网,这种焦虑我太懂了。很多人第一反应是问“顺德制作网站多少钱”,仿佛只要价格合适,技术难题就能迎刃而解。但现实往往更骨感:你花了一万… · 2026/9/27 11:32:32
网站托管及维护避坑指南:从备案到服务器选型实战 网站托管及维护避坑指南:从备案到服务器选型实战 备案流程一头雾水,导致上线延期,这是很多项目负责人在启动项目初期最容易踩的坑。别急着骂服务商不靠谱,很多时候是因为你没搞懂背后的逻辑。这份 避坑指南… · 2026/9/27 11:32:32
ASP做网站安全性图解步骤:3个漏洞堵住流量断崖 ASP做网站安全性图解步骤:3个漏洞堵住流量断崖 网站做好了没人访问,这不仅是流量焦虑,更是技术硬伤的直接体现。很多站长盯着后台数据发愁,以为只是SEO没做好,其实根源往往藏在代码底层。ASP作为老牌技术,若忽视 asp做网站安全性… · 2026/9/27 12:18:52
做网站开发的经营范围避坑指南:别让执照卡住流量 做网站开发的经营范围避坑指南:别让执照卡住流量 网站做好了没人访问,这比没做还让人心慌。你盯着后台数据,点击量寥寥无几,心里直打鼓:钱花了,时间搭进去了,怎么连个水花都没有?这时候很多老板才想起来,自己公司注册时填的“经营范围”里,压根没写… · 2026/9/27 12:18:46
织梦cms网站没流量?3步优化法教你选对SEO哪家好 织梦cms网站没流量?3步优化法教你选对SEO哪家好 网站做好了没人访问,是不是心塞?别急着怪百度,90%的织梦CMS网站死在“伪静态没配好”和“TDK标签乱填”上。很多老板问SEO哪家好,其实不是选公司,是看谁懂织梦的底层逻辑。今天不扯虚… · 2026/9/27 12:18:34
网站建设的总体目标包含哪几个方面注意事项 网站建设总体目标包含哪几个方面速查手册救活死站 网站做好了没人访问,这行干了十年,见过太多老板砸几十万做出来的站,上线三个月UV(独立访客)还没破百。别急着怪百度不给你流量,多半是你在建设初期就定错了方向。很多人以为网站建设就是找个模板套上… · 2026/9/27 12:18:22
莱芜车管所网站哪家好?3个避坑点+1套方案,省下50%预算 莱芜车管所网站哪家好?3个避坑点+1套方案,省下50%预算 找建站公司最怕什么?不是技术烂,而是被坑高价。很多业务负责人在咨询莱芜车管所网站哪家好时,心里没底:报价单上列着几千块的模板,转头又说需要定制,最后费用翻了三倍。别急,咱们不玩虚的… · 2026/9/27 12:17:57
3招搞懂百度推广渠道怎么选,别再把钱打水漂 3招搞懂百度推广渠道怎么选,别再把钱打水漂 网站做好了没人访问,这是很多老板最头疼的事。你花了几万块做了个高大上的官网,结果打开一看,后台流量全是零。这时候有人跳出来告诉你,得投百度推广。但百度推广渠道到底怎么选?是选信息流、搜索竞价,还是… · 2026/9/27 12:17:45
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01