Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。Redis也常用于Mysql数据库缓存。
如果你像挖站否这样安装了不少的WP插件(参考:我正在用的WordPress插件),同时给WP增加了论坛、评论等各种各样的扩展,那么Wordpress数据库查询次数可能会非常多,这时非常有必要给自己的Wordpress安装数据库缓存了,Redis缓存数据库是一个非常好的选择。
这篇文章就来分享一下如何在Wordpress上安装和使用Redis缓存加速,有一些插件或者主题会出现不兼容WP Redis的问题,我们可以设置忽略WP Redis 缓存的参数。同一个 Redis 实例服务多个站点时,每个独立的 WordPress 安装都要设置自己的键前缀,单独配置连接地址和凭据。
更多的关于WordPress优化和服务器优化的方法,这里有:
PS:2026年11月5日更新,更新了对象缓存键前缀、连接配置和停用方法,去掉共享 Redis 上清空整个实例的操作。
PS:更新记录:
1.使用Redis缓存可能会导致
OOM command not allowed的错误,解决方法:WordPress排查解决您的站点遇到了致命错误的过程-Redis内存缓存不足。2020.9.19
WordPress利用Redis缓存加速可以大大减少数据库,基本原理如下:(点击放大)
要让Wordpress使用Redis缓存加速,首先你需要在服务器上安装PHP Redis扩展,如果你在用Oneinstack、LNMP或者是宝塔BT面板,已经支持一键安装Redis了。
插件:
WordPress Redis缓存插件主要有:WP Redis、Redis Object Cache 等。页面缓存和对象缓存是两回事,同一个 WordPress 安装只启用一套对象缓存。 下面以 Redis Object Cache 为例,安装插件后到后台启用对象缓存,检查连接状态和 drop-in。旧图保留当时的插件界面。
以挖站否为例,这是Wordpress未利用Redis缓存时的数据库查询次数。
无论是登录或者是没有登录,Wordpress的数据库查询都是非常高的。
WordPress启用了Redis缓存加速后,数据库查询次数减少了一半以上,加速效果明显。
使用了Redis缓存后,有些主题或者是插件可能出现不兼容的问题,例如挖站否论坛使用的插件Anspress就不兼容Redis,所以我们需要在wp-config.php中排除插件或者主题用到的Groups,代码如下:
define('WP_REDIS_IGNORED_GROUPS',array('comment','counts','plugins','themes','anspress','ap','ap_prefetch_activities','ap_q_id_activity','ap_users_reputation','ap_qameta','ap_prefetch_activities','ap_subscriber','ap_votes_queries','ap_vote')); 我们在Redis Object Cache插件中可以看到忽略的参数,表示已经生效了。
如果几套独立的 WordPress 共用一个 Redis 实例,用 WP_REDIS_PREFIX 为每套安装设不同前缀。WP_CACHE_KEY_SALT 是旧配置中常见的写法,现用 Redis Object Cache 时优先核对插件文档。WordPress Multisite 网络内的站点由插件按网络的规则处理,别把它和几套独立安装混为一谈。
define( 'WP_REDIS_PREFIX', 'hpWQo8vfb3' );
# define('WP_CACHE', true); 如果你想要让你的Wordpress调用远程的Redis缓存(像阿里云、腾讯云就提供此类的服务),编辑wp-config.php指定Redis缓存的地址、端口、密码以及数据库等,如果配合上面的WP_CACHE_KEY_SALT设置,你又可以实现远程+多站点Redis缓存了。代码如下:
define('WP_REDIS_HOST', 'redis.internal.example'); #默认是127.0.0.1
define('WP_REDIS_PORT', 6379); // 按服务商端口填写
define('WP_REDIS_DATABASE', 0);
// 密码从受保护的部署配置读取;远程连接按服务商要求启用 TLS 远程 Redis 放在私有网络或受控连接上。托管服务要求 TLS 时按插件文档设置 WP_REDIS_SCHEME 等参数;不要把 Redis 端口直接开放给公网。配置项:https://github.com/rhubarbgroup/redis-cache/wiki/Configuration 。
Redis完整配置命令如下,请根据自己的需要使用:
#Redis完整配置如下:
define('WP_REDIS_CLIENT', 'pecl'); // 指定用于与Redis通信的客户端, pecl 即 The PHP Extension Community Library
define('WP_REDIS_SCHEME', 'tcp'); // 指定用于与Redis实例进行通信的协议
define('WP_REDIS_HOST', '127.0.0.1'); // Redis服务器的IP或主机名
define('WP_REDIS_PORT', '6379'); // Redis端口
define('WP_REDIS_DATABASE', '0'); // 接受用于使用该SELECT命令自动选择逻辑数据库的数值
// 需要认证时配置 WP_REDIS_PASSWORD,避免把实际口令写进公开示例
define('WP_REDIS_PREFIX', 'example-site:'); // 每套独立安装使用不同前缀
define('WP_REDIS_MAXTTL', '86400'); 优先从插件后台或 wp redis status 核对是否连接、客户端及 drop-in 状态。下面 MONITOR 是原来的临时观察方法,可能输出请求数据并增加开销,共享实例和平时排障优先用状态页。
redis-cli monitor
进入到你的网站,刷新页面,你就可以看到有数据输出了:
Redis缓存对于减少Wordpress的数据库查询次数非常有用,尤其是比较适合一些动态的网站,例如Wordpress设置页面缓存,但是对于登录用户就无法使用页面缓存,这时我们就可以使用Redis动态缓存了。
若缓存出现异常,先在对应站点停用对象缓存或检查插件的清理范围。Redis 实例由多个站点共用时,不要在 Redis 命令行执行 FLUSHALL,它会清除所有逻辑库的键。下面是 Redis Object Cache 插件的状态与停用命令,在目标站根目录运行:
# 核对连接和 drop-in wp redis status # 确认问题来自对象缓存时,可在该站停用 wp redis disable
文章出自:挖站否 https://wzfou.com/wordpress-redis/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
文章更新于: 2026年11月5日 上午12:30
查看评论
老了。该手动设置的东西都忘记了。又来看了一下才记得。干脆转发了!
年轻人……
这篇文章帮助很大,但后面发现其实我只需要那个刷新redis的代码.....
(因为以前建的wordpress使用了redis,导致那个缓存一直都在,新站点依然延续了前缀,所以会出现致命错误,一度让我怀疑人生!)
我现在依然还是遇到Redis缓存刷新的问题,经常出现的莫名的情况是账号和密码无法登录,然后手动清空Redis缓存又可以登录。
请问下WP_REDIS_DATABASE这个后面的数字序号对应的是Mysql中的数据库的顺序吗?还是说只是多站点中redis的database的一个标识序号呢?比如A站点WP_REDIS_DATABASE默认为0,B站点就设为1,C站点设为2...以此类推?
默认的是0,如果你用了:
define( 'WP_CACHE_KEY_SALT', 'hpWQo8vfb3' );,那么这里就会显示你自己命名的名称了。Redis可以用SSDB代替了,缓存持久化[偷笑]
貌似用的人少,有机会尝试一下。
手动强制删除Redis缓存的命令如下:
后面没了?[吃惊]
已经更新,谢谢。
如果是宝塔。还可以设置一下内存盘。很方便,把Redis的缓存文件指定去内存盘。像我就是这种用。真香
宝塔面板确实不错。