Discuz! X3.5 开启 Redis 主要是将高频的系统缓存、数据表缓存和会话状态从磁盘数据库(MySQL)转移到内存中,以此消除高并发下的数据库 I/O 与锁竞争瓶颈。
Redis 在 Discuz! X3.5 中的核心作用
- 接管系统全局缓存(syscache):论坛的基础设置、用户组权限、版块列表、插件配置等常规静态数据,原本需要查询 MySQL 的
pre_common_syscache 表并反序列化,开启 Redis 后全部常驻内存,实现纳秒/微秒级直读。
- 分担 Session 与在线用户压力:默认情况下,Discuz! 将用户在线记录写入 MySQL 的
pre_common_session 表。当并发在线人数升高时,该表频繁的并发读写极易引发锁争用与数据库连接耗尽;配置 Redis 接管后,会话读写完全在内存完成。
- 缓冲高频计数与热点数据:主题的查看数(views)等高频更新可以借助内存机制进行延时累加更新,避免每次访客刷新都直接触发 MySQL 的
UPDATE 操作。
- 显著降低 MySQL 资源消耗:页面渲染时执行的 SQL 查询次数通常可从数十次骤降到个位数,大幅降低数据库 CPU 占用率与磁盘 I/O 等待。
整体浏览速度与性能提升预期
| 维度 |
未开启 Redis |
开启 Redis 后 |
预期提升幅度 |
| PHP 页面执行耗时 |
0.06s – 0.30s+(数据库负载高时易达 0.5s 以上) |
0.01s – 0.04s |
缩短 50% – 80% |
| 首字节响应时间 (TTFB) |
100ms – 400ms |
30ms – 80ms |
加速 2 – 4 倍 |
| 单机并发承载能力 (QPS) |
易受 MySQL 锁表和连接数上限卡死 |
承载能力大幅提升 |
提升 2 – 5 倍 |
| 端到端用户感知速度 |
切换版块、进帖有轻微停顿感 |
页面动态内容近乎“秒开” |
整体感知提升约 30% – 50% |
性能边界说明:Redis 优化的是 PHP 动态脚本执行与数据库查询耗时。页面中图片、附件、CSS/JS 等静态资源的加载耗时并不受 Redis 影响。若想让论坛达到极致的整体加载速度,通常需要将 Redis 与 PHP OPcache、Web 静态资源强缓存/CDN 结合使用。
|