为了提升网站速度,降低MySQL的负载,通常都需要将数据缓存到内存中,常用的就是memcached、redis,但是相对来说Redis更符合需求,而且也更通用。于是就选择了Redis,而WordPress常用的redis缓存插件就是Redis Object Cache了,直接搜索名称安装即可。
Redis Object Cache插件默认会连接localhost:6379的redis,并且database为0。但是目前我的网站是由两台服务器支撑,所以打算再折腾折腾。单机版的Redis自然足矣支撑了,但是另一台机器闲置着岂不浪费了,于是就考虑使用Reids主从、哨兵、集群。其中最简单的就是主从了。
1.搭建Redis主从结构
10.99.0.1 master 10.00.0.2 slave-01
上面的内容就是Redis的主从角色。安装redis很简单,可参考我以前安装redis5的方法。直接从配置开始:
master配置:
bind 10.99.0.1 ::1 bind 10.99.0.1 # 关闭保护模式,因为需要配置密码 protected-mode no # 端口号 port 6379 # 守护进程 daemonize yes databases 16 loglevel notice logfile /usr/local/redis/var/redis.log slave-serve-stale-data yes slave-read-only yes # 配置redis认证 requirepass yourpassword
启动Master节点的redis。测试认证
redis-cli -h 10.99.0.1 -a yourpassword info
部署Slave节点的redis
将master节点的redis.conf拷贝到slave的服务器上(10.99.0.2)。新增如下配置:
# 配置Master的ip与端口 slaveof 10.99.0.1 6379 # 配置master密码 masterauth yourpassword # 其余配置与master保持一致,只需要修改bind即可 bind 10.99.0.2
启动slave节点的redis,测试认证:
redis-cli -h 10.99.0.2 -a yourpassword info
测试在master几点设置一个key,然后在slave节点查看,并修改,如果能够看到master设置的key,并且无法修改,则表示搭建成功。
接着修改wp-config.php,让redis object cache支持主从模式的redis。
在wp-config.php中新增如下配置:
// redis define('WP_REDIS_HOST',['10.99.0.1','10.99.0.2']); define('WP_REDIS_SERVERS', [ 'tcp://10.99.0.1:6379?database=6&alias=master', 'tcp://10.99.0.2:6379?database=6&alias=slave-01', ]); define('WP_REDIS_PASSWORD','yourpassword'); define('WP_REDIS_DATABASE','6');
这里需要注意WP_REDIS_SERVERS的alias的两个名词必须是master和slave-01这种形式,我修改成Master和Slave-01会发现Redis Obejct Cache无法连接。
开启Redis Object Cache后,如下图所示:
登录任意一个redis,切换数据库到6,查看是否有内容:
redis-cli -h 10.99.0.1 -a yourpassword
select 6
keys *
如果有内容,则表示Redis已经生效。
关于哨兵、集群等模式的配置,请参考官方文档:https://cn.wordpress.org/plugins/redis-cache/