> 技术文档 > Redis速度揭秘:每秒百万请求的六大核心黑科技

Redis速度揭秘:每秒百万请求的六大核心黑科技


一句话真相:Redis比数据库快100倍,相当于\"火箭🚀 vs 自行车🚲\"!本文将带你拆解Redis的速度密码,零基础也能看懂!


一、Redis到底有多快?先看硬核数据!

场景 MySQL Redis 性能差距 单次读操作 5~10ms 0.1ms 50~100倍 每秒查询量(QPS) 1万~2万 100万+ 50倍以上 并发连接数 数千 10万+ 20倍+

💡 实测对比:Redis单机轻松处理百万级请求,相当于1秒处理完整个清华大学师生的选课请求!


二、六大核心加速技术揭秘

🧠 1. 内存存储:拒绝磁盘IO的\"高速公路\"

原理类比:

  • 磁盘读取 ≈ 从图书馆找书(5秒)
  • 内存读取 ≈ 翻随身笔记本(0.1秒)

#mermaid-svg-jwPLPRWwtvpJxZQf {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .error-icon{fill:#552222;}#mermaid-svg-jwPLPRWwtvpJxZQf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jwPLPRWwtvpJxZQf .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jwPLPRWwtvpJxZQf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jwPLPRWwtvpJxZQf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jwPLPRWwtvpJxZQf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jwPLPRWwtvpJxZQf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jwPLPRWwtvpJxZQf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jwPLPRWwtvpJxZQf .marker.cross{stroke:#333333;}#mermaid-svg-jwPLPRWwtvpJxZQf svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jwPLPRWwtvpJxZQf .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .cluster-label text{fill:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .cluster-label span{color:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .label text,#mermaid-svg-jwPLPRWwtvpJxZQf span{fill:#333;color:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .node rect,#mermaid-svg-jwPLPRWwtvpJxZQf .node circle,#mermaid-svg-jwPLPRWwtvpJxZQf .node ellipse,#mermaid-svg-jwPLPRWwtvpJxZQf .node polygon,#mermaid-svg-jwPLPRWwtvpJxZQf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jwPLPRWwtvpJxZQf .node .label{text-align:center;}#mermaid-svg-jwPLPRWwtvpJxZQf .node.clickable{cursor:pointer;}#mermaid-svg-jwPLPRWwtvpJxZQf .arrowheadPath{fill:#333333;}#mermaid-svg-jwPLPRWwtvpJxZQf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jwPLPRWwtvpJxZQf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jwPLPRWwtvpJxZQf .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jwPLPRWwtvpJxZQf .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jwPLPRWwtvpJxZQf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jwPLPRWwtvpJxZQf .cluster text{fill:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf .cluster span{color:#333;}#mermaid-svg-jwPLPRWwtvpJxZQf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jwPLPRWwtvpJxZQf :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}客户端请求CPU访问内存返回数据传统数据库CPU访问磁盘返回数据

关键优势:

  • 内存速度比SSD快100倍
  • 无磁盘寻道时间(平均9ms)

⚠️ 代价:内存成本高,需持久化防断电


🧵 2. 单线程模型:避免多线程\"堵车\"

Redis 6.0前核心逻辑:

#mermaid-svg-9aNgPOa4wrhwnT66 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .error-icon{fill:#552222;}#mermaid-svg-9aNgPOa4wrhwnT66 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-9aNgPOa4wrhwnT66 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-9aNgPOa4wrhwnT66 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-9aNgPOa4wrhwnT66 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-9aNgPOa4wrhwnT66 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-9aNgPOa4wrhwnT66 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-9aNgPOa4wrhwnT66 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-9aNgPOa4wrhwnT66 .marker.cross{stroke:#333333;}#mermaid-svg-9aNgPOa4wrhwnT66 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-9aNgPOa4wrhwnT66 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .cluster-label text{fill:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .cluster-label span{color:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .label text,#mermaid-svg-9aNgPOa4wrhwnT66 span{fill:#333;color:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .node rect,#mermaid-svg-9aNgPOa4wrhwnT66 .node circle,#mermaid-svg-9aNgPOa4wrhwnT66 .node ellipse,#mermaid-svg-9aNgPOa4wrhwnT66 .node polygon,#mermaid-svg-9aNgPOa4wrhwnT66 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-9aNgPOa4wrhwnT66 .node .label{text-align:center;}#mermaid-svg-9aNgPOa4wrhwnT66 .node.clickable{cursor:pointer;}#mermaid-svg-9aNgPOa4wrhwnT66 .arrowheadPath{fill:#333333;}#mermaid-svg-9aNgPOa4wrhwnT66 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-9aNgPOa4wrhwnT66 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-9aNgPOa4wrhwnT66 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-9aNgPOa4wrhwnT66 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-9aNgPOa4wrhwnT66 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-9aNgPOa4wrhwnT66 .cluster text{fill:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 .cluster span{color:#333;}#mermaid-svg-9aNgPOa4wrhwnT66 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-9aNgPOa4wrhwnT66 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}网络请求单线程事件循环执行命令返回响应

为什么单线程更快?

  1. 无锁竞争:避免线程切换开销
  2. 无资源争用:CPU缓存命中率100%
  3. 原子操作:INCR/DECR等命令无需加锁

🔥 Redis 6.0升级:

  • 多线程网络I/O(处理连接/解析)
  • 核心逻辑仍单线程执行命令

📡 3. I/O多路复用:高并发的\"调度大师\"

传统模型 vs Redis模型:
Redis速度揭秘:每秒百万请求的六大核心黑科技

Epoll工作原理:

#mermaid-svg-dX8xSXO6WEg0A2yz {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz .error-icon{fill:#552222;}#mermaid-svg-dX8xSXO6WEg0A2yz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dX8xSXO6WEg0A2yz .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-dX8xSXO6WEg0A2yz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dX8xSXO6WEg0A2yz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dX8xSXO6WEg0A2yz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dX8xSXO6WEg0A2yz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dX8xSXO6WEg0A2yz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dX8xSXO6WEg0A2yz .marker.cross{stroke:#333333;}#mermaid-svg-dX8xSXO6WEg0A2yz svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dX8xSXO6WEg0A2yz .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-dX8xSXO6WEg0A2yz text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-dX8xSXO6WEg0A2yz .actor-line{stroke:grey;}#mermaid-svg-dX8xSXO6WEg0A2yz .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz .sequenceNumber{fill:white;}#mermaid-svg-dX8xSXO6WEg0A2yz #sequencenumber{fill:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz .messageText{fill:#333;stroke:#333;}#mermaid-svg-dX8xSXO6WEg0A2yz .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-dX8xSXO6WEg0A2yz .labelText,#mermaid-svg-dX8xSXO6WEg0A2yz .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-dX8xSXO6WEg0A2yz .loopText,#mermaid-svg-dX8xSXO6WEg0A2yz .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-dX8xSXO6WEg0A2yz .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-dX8xSXO6WEg0A2yz .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-dX8xSXO6WEg0A2yz .noteText,#mermaid-svg-dX8xSXO6WEg0A2yz .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-dX8xSXO6WEg0A2yz .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-dX8xSXO6WEg0A2yz .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-dX8xSXO6WEg0A2yz .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-dX8xSXO6WEg0A2yz .actorPopupMenu{position:absolute;}#mermaid-svg-dX8xSXO6WEg0A2yz .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-dX8xSXO6WEg0A2yz .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-dX8xSXO6WEg0A2yz .actor-man circle,#mermaid-svg-dX8xSXO6WEg0A2yz line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-dX8xSXO6WEg0A2yz :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}客户端1Redis客户端2Epoll连接请求连接请求注册socket监听触发可读事件处理请求处理请求客户端1Redis客户端2Epoll

优势:单线程管理10万连接,CPU占用<5%


🧰 4. 精妙数据结构:时间复杂度的\"降维打击\"
数据结构 操作 时间复杂度 类比优势 哈希表 GET/SET O(1) 直接查字典 跳跃表 ZRANGE O(log N) 地铁快线跳站 压缩列表 LPUSH O(1) 紧密排列的集装箱

跳跃表 vs 二叉树:

#mermaid-svg-6UF37Y1kPd2UAvky {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .error-icon{fill:#552222;}#mermaid-svg-6UF37Y1kPd2UAvky .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6UF37Y1kPd2UAvky .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6UF37Y1kPd2UAvky .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6UF37Y1kPd2UAvky .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6UF37Y1kPd2UAvky .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6UF37Y1kPd2UAvky .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6UF37Y1kPd2UAvky .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6UF37Y1kPd2UAvky .marker.cross{stroke:#333333;}#mermaid-svg-6UF37Y1kPd2UAvky svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6UF37Y1kPd2UAvky .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .cluster-label text{fill:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .cluster-label span{color:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .label text,#mermaid-svg-6UF37Y1kPd2UAvky span{fill:#333;color:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .node rect,#mermaid-svg-6UF37Y1kPd2UAvky .node circle,#mermaid-svg-6UF37Y1kPd2UAvky .node ellipse,#mermaid-svg-6UF37Y1kPd2UAvky .node polygon,#mermaid-svg-6UF37Y1kPd2UAvky .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6UF37Y1kPd2UAvky .node .label{text-align:center;}#mermaid-svg-6UF37Y1kPd2UAvky .node.clickable{cursor:pointer;}#mermaid-svg-6UF37Y1kPd2UAvky .arrowheadPath{fill:#333333;}#mermaid-svg-6UF37Y1kPd2UAvky .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6UF37Y1kPd2UAvky .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6UF37Y1kPd2UAvky .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6UF37Y1kPd2UAvky .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6UF37Y1kPd2UAvky .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6UF37Y1kPd2UAvky .cluster text{fill:#333;}#mermaid-svg-6UF37Y1kPd2UAvky .cluster span{color:#333;}#mermaid-svg-6UF37Y1kPd2UAvky div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6UF37Y1kPd2UAvky :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}元素1元素3元素2元素5元素8

  • 查询元素5: 1→3→5(只需3步)
  • 同等数据二叉树平均需要5步

🔄 5. 渐进式Rehash:扩容不卡顿的\"平滑迁移\"

传统哈希表问题:

  • 10万键扩容时卡顿500ms

Redis解决方案:

#mermaid-svg-bsS9xolQSl7rRWpP {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .error-icon{fill:#552222;}#mermaid-svg-bsS9xolQSl7rRWpP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bsS9xolQSl7rRWpP .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bsS9xolQSl7rRWpP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bsS9xolQSl7rRWpP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bsS9xolQSl7rRWpP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bsS9xolQSl7rRWpP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bsS9xolQSl7rRWpP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bsS9xolQSl7rRWpP .marker.cross{stroke:#333333;}#mermaid-svg-bsS9xolQSl7rRWpP svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bsS9xolQSl7rRWpP .mermaid-main-font{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-family:var(--mermaid-font-family);}#mermaid-svg-bsS9xolQSl7rRWpP .exclude-range{fill:#eeeeee;}#mermaid-svg-bsS9xolQSl7rRWpP .section{stroke:none;opacity:0.2;}#mermaid-svg-bsS9xolQSl7rRWpP .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-bsS9xolQSl7rRWpP .section2{fill:#fff400;}#mermaid-svg-bsS9xolQSl7rRWpP .section1,#mermaid-svg-bsS9xolQSl7rRWpP .section3{fill:white;opacity:0.2;}#mermaid-svg-bsS9xolQSl7rRWpP .sectionTitle0{fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .sectionTitle1{fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .sectionTitle2{fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .sectionTitle3{fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .sectionTitle{text-anchor:start;font-family:\'trebuchet ms\',verdana,arial,sans-serif;font-family:var(--mermaid-font-family);}#mermaid-svg-bsS9xolQSl7rRWpP .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-bsS9xolQSl7rRWpP .grid .tick text{font-family:\"trebuchet ms\",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-bsS9xolQSl7rRWpP .grid path{stroke-width:0;}#mermaid-svg-bsS9xolQSl7rRWpP .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-bsS9xolQSl7rRWpP .task{stroke-width:2;}#mermaid-svg-bsS9xolQSl7rRWpP .taskText{text-anchor:middle;font-family:\'trebuchet ms\',verdana,arial,sans-serif;font-family:var(--mermaid-font-family);}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutsideRight{fill:black;text-anchor:start;font-family:\'trebuchet ms\',verdana,arial,sans-serif;font-family:var(--mermaid-font-family);}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-bsS9xolQSl7rRWpP .task.clickable{cursor:pointer;}#mermaid-svg-bsS9xolQSl7rRWpP .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-bsS9xolQSl7rRWpP .taskText0,#mermaid-svg-bsS9xolQSl7rRWpP .taskText1,#mermaid-svg-bsS9xolQSl7rRWpP .taskText2,#mermaid-svg-bsS9xolQSl7rRWpP .taskText3{fill:white;}#mermaid-svg-bsS9xolQSl7rRWpP .task0,#mermaid-svg-bsS9xolQSl7rRWpP .task1,#mermaid-svg-bsS9xolQSl7rRWpP .task2,#mermaid-svg-bsS9xolQSl7rRWpP .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutside0,#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutside2{fill:black;}#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutside1,#mermaid-svg-bsS9xolQSl7rRWpP .taskTextOutside3{fill:black;}#mermaid-svg-bsS9xolQSl7rRWpP .active0,#mermaid-svg-bsS9xolQSl7rRWpP .active1,#mermaid-svg-bsS9xolQSl7rRWpP .active2,#mermaid-svg-bsS9xolQSl7rRWpP .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-bsS9xolQSl7rRWpP .activeText0,#mermaid-svg-bsS9xolQSl7rRWpP .activeText1,#mermaid-svg-bsS9xolQSl7rRWpP .activeText2,#mermaid-svg-bsS9xolQSl7rRWpP .activeText3{fill:black!important;}#mermaid-svg-bsS9xolQSl7rRWpP .done0,#mermaid-svg-bsS9xolQSl7rRWpP .done1,#mermaid-svg-bsS9xolQSl7rRWpP .done2,#mermaid-svg-bsS9xolQSl7rRWpP .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-bsS9xolQSl7rRWpP .doneText0,#mermaid-svg-bsS9xolQSl7rRWpP .doneText1,#mermaid-svg-bsS9xolQSl7rRWpP .doneText2,#mermaid-svg-bsS9xolQSl7rRWpP .doneText3{fill:black!important;}#mermaid-svg-bsS9xolQSl7rRWpP .crit0,#mermaid-svg-bsS9xolQSl7rRWpP .crit1,#mermaid-svg-bsS9xolQSl7rRWpP .crit2,#mermaid-svg-bsS9xolQSl7rRWpP .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-bsS9xolQSl7rRWpP .activeCrit0,#mermaid-svg-bsS9xolQSl7rRWpP .activeCrit1,#mermaid-svg-bsS9xolQSl7rRWpP .activeCrit2,#mermaid-svg-bsS9xolQSl7rRWpP .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-bsS9xolQSl7rRWpP .doneCrit0,#mermaid-svg-bsS9xolQSl7rRWpP .doneCrit1,#mermaid-svg-bsS9xolQSl7rRWpP .doneCrit2,#mermaid-svg-bsS9xolQSl7rRWpP .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-bsS9xolQSl7rRWpP .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-bsS9xolQSl7rRWpP .milestoneText{font-style:italic;}#mermaid-svg-bsS9xolQSl7rRWpP .doneCritText0,#mermaid-svg-bsS9xolQSl7rRWpP .doneCritText1,#mermaid-svg-bsS9xolQSl7rRWpP .doneCritText2,#mermaid-svg-bsS9xolQSl7rRWpP .doneCritText3{fill:black!important;}#mermaid-svg-bsS9xolQSl7rRWpP .activeCritText0,#mermaid-svg-bsS9xolQSl7rRWpP .activeCritText1,#mermaid-svg-bsS9xolQSl7rRWpP .activeCritText2,#mermaid-svg-bsS9xolQSl7rRWpP .activeCritText3{fill:black!important;}#mermaid-svg-bsS9xolQSl7rRWpP .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:\'trebuchet ms\',verdana,arial,sans-serif;font-family:var(--mermaid-font-family);}#mermaid-svg-bsS9xolQSl7rRWpP :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}2025-08-172025-08-172025-08-172025-08-172025-08-172025-08-172025-08-172025-08-172025-08-172025-08-172025-08-17旧表(h0) 迁移桶0 新表(h1) 处理客户端请求 迁移桶1 双哈希表 迁移过程 渐进式Rehash流程

操作原理:

  1. 同时维护两个哈希表(h0和h1)
  2. 每次请求迁移1个桶(键值对)
  3. 新数据直接写入h1
  4. 迁移完成后h1替换h0

⚙️ 6. 底层优化:极致性能的\"秘密武器\"
✨ a. 内存对齐:CPU读取加速30%

对比测试:

// 未对齐结构(可能跨CPU缓存行) struct Bad { char a; int b; }; // 占用8字节 // 对齐结构 struct Good { int b; char a; }; // 占用5字节 
✨ b. 绑定CPU核心:减少上下文切换

启动命令:

taskset -c 0,1 redis-server # 绑定CPU0和1 
✨ c. AOF持久化优化

#mermaid-svg-44PKWuckgygAzUK4 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-44PKWuckgygAzUK4 .error-icon{fill:#552222;}#mermaid-svg-44PKWuckgygAzUK4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-44PKWuckgygAzUK4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-44PKWuckgygAzUK4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-44PKWuckgygAzUK4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-44PKWuckgygAzUK4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-44PKWuckgygAzUK4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-44PKWuckgygAzUK4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-44PKWuckgygAzUK4 .marker.cross{stroke:#333333;}#mermaid-svg-44PKWuckgygAzUK4 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-44PKWuckgygAzUK4 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-44PKWuckgygAzUK4 .cluster-label text{fill:#333;}#mermaid-svg-44PKWuckgygAzUK4 .cluster-label span{color:#333;}#mermaid-svg-44PKWuckgygAzUK4 .label text,#mermaid-svg-44PKWuckgygAzUK4 span{fill:#333;color:#333;}#mermaid-svg-44PKWuckgygAzUK4 .node rect,#mermaid-svg-44PKWuckgygAzUK4 .node circle,#mermaid-svg-44PKWuckgygAzUK4 .node ellipse,#mermaid-svg-44PKWuckgygAzUK4 .node polygon,#mermaid-svg-44PKWuckgygAzUK4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-44PKWuckgygAzUK4 .node .label{text-align:center;}#mermaid-svg-44PKWuckgygAzUK4 .node.clickable{cursor:pointer;}#mermaid-svg-44PKWuckgygAzUK4 .arrowheadPath{fill:#333333;}#mermaid-svg-44PKWuckgygAzUK4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-44PKWuckgygAzUK4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-44PKWuckgygAzUK4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-44PKWuckgygAzUK4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-44PKWuckgygAzUK4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-44PKWuckgygAzUK4 .cluster text{fill:#333;}#mermaid-svg-44PKWuckgygAzUK4 .cluster span{color:#333;}#mermaid-svg-44PKWuckgygAzUK4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-44PKWuckgygAzUK4 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}追加到每秒同步重写压缩写命令AOF缓冲区磁盘新AOF文件

  • fsync策略:
    • always:每条同步(安全但慢)
    • everysec:每秒同步(推荐)
    • no:由系统决定(最快但可能丢数据)

三、性能实测:不同场景对比

测试环境:4核CPU/8GB内存/SSD磁盘

操作类型 QPS 平均延迟 SET字符串 1,200,000 0.08ms GET字符串 1,500,000 0.06ms LPUSH列表 900,000 0.11ms ZADD有序集合 850,000 0.12ms

💡 压测命令:

redis-benchmark -t set,get -n 1000000 -c 100 -P 16 

四、性能调优实战指南

🚫 避坑1:Big Key(大对象)

错误示范:

SET user:history \"10MB字符串...\" # 阻塞其他请求! 

解决方案:

  • 拆分Hash:HSET user:1001 history:2023 \"数据\"
  • 压缩值:SET user:1001 gzip(数据)
⏱ 避坑2:Keys命令导致卡顿

错误操作:

KEYS * # 遍历所有键,阻塞10秒! 

替代方案:

SCAN 0 MATCH user:* COUNT 100 # 分批扫描 
🔧 参数调优表:
配置项 默认值 生产建议 作用 maxmemory 0(无限制) 物理内存70% 防内存溢出 tcp-backlog 511 10000+ 高并发连接队列 repl-disable-tcp-nodelay no yes 减少网络延迟

五、总结:Redis性能六芒星

Redis速度揭秘:每秒百万请求的六大核心黑科技

核心要点:

  1. 内存是基石:比磁盘快100倍
  2. 单线程避锁:CPU利用率达100%
  3. 多路复用扛并发:10万连接稳如泰山
  4. 数据结构精设计😮(1)复杂度碾压对手

#Redis性能优化 #高并发架构 #后端开发
👉 点赞+收藏,知识不迷路!