Redis缓存到底怎么用——建站常见的六个问题和解答

王尘宇 问题解答 5

上个月帮一个做WordPress网站的朋友接入Redis,踩了不少坑。整理一下最常见的六个问题。

Q1:WordPress需要接Redis吗?

看你的流量。日PV在1000以下,用WP Super Cache或W3 Total Cache的文件缓存就够了,不需要Redis。日PV到了5000以上,文件缓存的瓶颈就出来了——每次缓存过期要重新生成HTML文件,磁盘IO会成为瓶颈。这时候Redis的内存缓存优势就体现出来了。

我朋友的站日PV大概8000,接了Redis之后,服务器的平均响应时间从420毫秒降到了180毫秒。提升很明显。

Q2:Redis装在同台服务器上还是独立服务器?

如果你的服务器内存大于4GB,Redis装在同一台上就行。WordPress的Redis缓存数据量一般不超过500MB,不会和PHP-FPM抢太多内存。

如果你的服务器只有2GB内存,建议把Redis装在另一台上。Redis和PHP-FPM同时跑在2GB的机器上,内存不够用的时候会触发swap,性能反而变差。

一个判断方法:看服务器的available内存。如果跑完WordPress和MySQL之后还剩1GB以上,够Redis用了。

Q3:Redis Object Cache插件怎么配?

WordPress用Redis需要装"Redis Object Cache"插件。但光装插件不够,还得改wp-config.php:

define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_DATABASE', 0);

如果你的Redis设了密码,还要加一行:define('WP_REDIS_PASSWORD', '你的密码');

改完wp-config.php之后,进WordPress后台→设置→Redis,点"Enable Object Cache"。状态变绿色就说明接上了。

Q4:Redis会不会缓存旧数据?

会。Redis缓存是有过期时间的,默认3600秒(1小时)。在过期之前,你改了文章内容,用户看到的可能还是旧版本。

解决办法:Redis Object Cache插件会在你发布或更新文章时自动清除相关缓存。但有时候不够及时——特别是修改了侧边栏、菜单这类全局元素时。

手动清缓存:后台Redis设置页面点"Purge Cache"。或者用WP-CLI命令:wp redis flush。

Q5:Redis和CDN能一起用吗?

必须一起用。它们解决的是不同层面的问题。

CDN解决的是"用户到服务器"这一段——把静态资源(图片、CSS、JS)缓存到离用户最近的节点,减少网络延迟。

Redis解决的是"服务器内部"这一段——把数据库查询结果存在内存里,减少PHP每次请求都要查MySQL的开销。

两者不冲突,配合使用效果最好。我朋友的站同时接了Cloudflare CDN和Redis之后,TTFB从420毫秒降到了120毫秒,全球访问速度都上去了。

Q6:Redis占多少内存?怎么监控?

WordPress的Redis缓存一般占100MB到500MB,取决于你网站的文章数量和插件数量。

监控方法:SSH到服务器,运行redis-cli info memory,看used_memory_human字段。如果超过1GB,说明缓存了太多不该缓存的东西,需要检查一下哪些插件在往Redis里塞数据。

另一个有用的命令:redis-cli --bigkeys,找出占用内存最大的键。有些插件(特别是页面构建器)会缓存大量数据,如果发现异常大键,考虑排除那个插件的缓存。

最后说一句:Redis不是万能药。如果你的瓶颈在PHP执行速度(比如用了很重的主题或插件),Redis帮不了多少。先用Query Monitor插件找瓶颈,再决定要不要上Redis。

标签: Redis WordPress缓存 网站性能

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~