本文最后更新于 2753 天前,其中的信息可能已经有所发展或是发生改变。
前言
前面有介绍过使用 APCu 作为对象缓存的 Lcache,其优点就是不走 TCP/IP 已获得更好的性能。后来我发现 Redis 和 Memcached 其实也可以走 Unix Sockets 而避免走 TCP/IP 而带来性能瓶颈
介绍
当 Redis 走 Unix Sockets 是在 OSI 模型中而没有哦组 TCP/IP,可以实现约 25% 的性能提升。
安装
以 Ubuntu 16.04 LTS 为例,
一、安装 Redis
apt-get install redis-server
二、查看目前 Redis 运行在那个用户上
[email protected]:~# sudo ps aux | grep redis
sudo: unable to resolve host www.mf8.biz
redis 29409 0.0 0.8 37224 8796 ? Ssl 10:43 0:00 /usr/bin/redis-server 127.0.0.1:6379
可见 Redis 运行在 redis
上
三、添加到 Apache、Nginx 和 PHP-FPM 所在的用户组,一般来说软件源安装的都是 www-data
,编译的都是 www
,但是不绝对,我这里是在 www-data
usermod -g www-data redis
四、创建 unix socket 所在文件夹
mkdir -p /var/run/redis/
五、赋予权限
chown -R redis:www-data /var/run/redis
六、修改配置文件,我的是在 /etc/redis/redis.conf
将 unixsocket
和 unixsocketperm
前的 #
去掉,并将 unixsocketperm
的值由 700
改为 777
,否则将不能清理缓存
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /var/run/redis/redis.sock
unixsocketperm 777
七、重启
service redis-server restart
八、如何正常运行的话,通过 ls -lh
命令查看会返回如下结果:
[email protected]:~# ls -lh /var/run/redis
total 4.0K
-rw-r--r-- 1 redis www-data 6 Mar 14 10:56 redis-server.pid
srwx------ 1 redis www-data 0 Mar 14 10:56 redis.sock
[email protected]:~#
WP设置
一、安装 Redis Object Cache 插件
二、在 wp-config.php
文件的 <?php
后添加,顺序不能变:
define('WP_REDIS_PATH', /var/run/redis/
redis.sock); define('WP_REDIS_SCHEME', unix);
三、然后 Redis Object Cache 插件就会用走 Unix Socket 的 Redis 作为对象缓存而不是 TCP/IP 的了~
沙发稳稳的
稳坐沙发
define(‘WP_REDIS_PATH’, /var/run/redis/redis.sock
define(‘WP_REDIS_SCHEME’, unix););
手癌错误
按博主的教程走的,把redis加入了www组了。redis配置也改了,ls -lh能看到sock文件。但是只要修改wp-config正式生效后网站就500了…..百思不得其解。
path在前,SCHEME在后。