解决wordpress开启redis缓存后的问题

最新为了加速网站的访问,我安装Redis Object Cache软件。

并且在wp-config.php中也添加了对应的代码配置

define("WP\_CACHE\_KEY\_SALT",'trojansun\_');
define('WP\_REDIS\_SELECTIVE_FLUSH',true);

配置完成后,可以在管理面板看到如下内容

可是当我们退出之后,发现竟然无法登录

从晚上找了一圈,一般的方法都是清空redis,但是我既然用了redis,我如果每次登录都清空,那么意义何在?

所以经过多方尝试,我也采用了删除部分key的方法。

下面是SHELL脚本,不是redis脚本,切记不要运行错了地方。

redis-cli keys "wp_:user*" | xargs redis-cli del

这个脚本主要是删除wp_用户相关的信息,删除之后,就可以登陆了。(如果是多用户,我觉得就很坑,不可能让网站用户去删除相关信息吧。)

唯一可以想到的解决办法,就是删除对应的user key,可以在退出的时候,使用PHP删除redis里面的user key(但是如果不是退出估计就不行了),更或者直接不缓存这几个字段就好了。

发现一个新的解决方法,就是在wp-config.php中去掉

define("WP\_CACHE\_KEY\_SALT",'trojansun\_');
define('WP\_REDIS\_SELECTIVE_FLUSH',true);

胡乱猜想下:

  • 第一个是设置所有缓存键的前缀
  • 第二个是如果设置为true,则刷新缓存只会删除带前缀的键WP_CACHE_KEY_SALT(而不是清空整个Redis数据库)。选择性冲洗是原子O(n)操作。

如果我们设置了WP_CACHE_KEY_SALT,但是 WP_REDIS_GLOBAL_GROUPS 中去掉的是user_meta,也许是与包含前缀有冲突。

标签: wordpress