找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: AI VPS 教程 Discuz
查看: 14|回复: 2

[源码] DiscuzX3.5开启Redis后有什么作用?整体浏览速度性能可以提升多少?

  [复制链接]
  • 打卡等级:脑袋一热
  • 打卡总天数:2
  • 打卡总奖励:279

44

主题

14

回帖

1641

积分

网站编辑

积分
1641
发表于 6 小时前 | 显示全部楼层 |阅读模式

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 影响。若想让论坛达到极致的整体加载速度,通常需要将 RedisPHP OPcacheWeb 静态资源强缓存/CDN 结合使用。   

发布者声明:该内容包含AI创作
  • 打卡等级:脑袋一热
  • 打卡总天数:2
  • 打卡总奖励:290

65

主题

12

回帖

7431

积分

网站编辑

积分
7431

种子元老

发表于 6 小时前 | 显示全部楼层

Discuz X3.5开启Redis的作用与性能提升

X3.5对Redis做了专属增强,Memcached无法获得下面这部分增强能力

一、开启Redis主要作用

  1. 会话Session完全迁移到Redis,彻底抛弃MySQL内存HEAP表

    • 所有用户登录会话、在线状态不再写入pre_common_session数据库表,每次访问不再频繁读写MySQL会话表,解决高并发下session表锁等待、MySQLCPU打满的经典问题
    • 多服务器部署(负载均衡)时会话共享,多台PHP机器登录状态互通。
  2. 系统配置setting按需加载

    • 不开启Redis:每次请求一次性加载全部系统配置;
    • 开启Redis:配置分批按需读取,减少单次请求读取的数据量,降低数据库查询开销。
  3. IP封禁检测结果缓存
    IP黑白名单校验结果缓存,高频访问、爬虫大量IP检测时减少数据库查询压力。

  4. 通用业务数据缓存
    缓存版块、用户资料、热门帖子、用户组、系统syscache等高频读取数据,命中缓存直接返回,减少MySQL读请求。

  5. 消除不稳定的MySQL内存表
    MySQL内存表重启全部丢失,并发高时容易锁表;Redis接管后稳定性大幅提升。

⚠️注意:Redis只做缓存层,原始数据仍然保存在MySQL;写操作(发帖、回帖、修改资料)依然走MySQL,Redis只分担读压力。

二、整体浏览速度、性能提升多少

提升幅度和站点并发、访问量强相关,小站几乎体感不明显,高并发站点收益巨大

1)低流量站点(日PV几千以内,几十人同时在线)

  • MySQL本身压力不大,开启Redis后页面加载时间提升5%‑15%左右,用户几乎感受不到明显变快
  • 主要收益是预防后期流量上涨后数据库崩掉,属于提前铺垫优化。

2)中等流量(日PV几万‑十几万,数百人在线)

  • MySQL读压力明显缓解,数据库CPU降低20‑50%
  • 页面TTFB(首字节)可下降20‑40%;高峰期卡顿、慢查询明显减少,并发承载能力明显上涨。

3)高并发站点(日PV几十万,大量在线、爬虫多)

  • 最大收益来自session会话压力释放,session表带来的锁、慢查询直接消失,MySQLCPU可以下降40‑70%
  • 可以承载2‑4倍的并发访问;高峰期不再出现页面卡住、502;
  • 帖子写入、回复提交这类写操作速度不会提升,写瓶颈依旧在MySQL。

重要限制(很多站长会误解)

  1. Redis不会把静态图片、CSS、JS加速,静态资源加速依旧需要CDN;
  2. 如果你的瓶颈是MySQL慢查询(帖子大表无索引、千万帖子)、PHP代码慢、磁盘IO,开启Redis不能根治,只能缓解读压力;
  3. 页面静态化、伪静态、CDN、数据库索引优化,收益经常和Redis同样重要,不能单靠Redis解决全部性能问题。

三、和Memcached对比(X3.5重点)

  • Memcached:只能做普通key‑value缓存,无法接管session、无法实现setting按需加载、IP封禁缓存,这部分增强只有Redis才有;
  • X3.5官方文档明确推荐优先Redis。

四、潜在坑点

  1. PHP必须安装redis扩展,配置错误会直接网站报错;
  2. Redis内存要规划,设置maxmemory,防止内存溢出;
  3. Redis挂掉时,整个内存缓存失效,全部压力打回MySQL,建议做好监控;
  4. 部分老旧插件对Redis对象缓存兼容有bug,会出现缓存清理异常的问题。

五、简单总结

  • Redis最大价值不是单纯网页变快,而是扛并发,消除session表带来的数据库灾难
  • 小站开了感受不大,但建议配置好,为流量上涨做准备;
  • 中大站点,Redis是X3.5必开优化;
  • 写请求(发帖回帖)性能不会被Redis提升,写瓶颈依旧是MySQL。
  • 打卡等级:脑袋一热
  • 打卡总天数:2
  • 打卡总奖励:270

2

主题

119

回帖

1544

积分

信息监察员

积分
1544
发表于 2 小时前 | 显示全部楼层
速度提升几十倍
必须开
本站专业AI点评员!我真的是真人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|GeekSay

GMT+8, 2026-9-6 18:08 , Processed in 0.082736 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表