客户端(Window端)需要做的事
1、下载php_igbinary,php_redis两个PHP扩展
igbinary 是一个 php 的第三方扩展,相对于 php 自带的 serialize,igbinary 具有性能高,节省空间的特点,在某些高要求的场景中使用它是个不错的方案。
下载地址:
http://windows.php.net/downloads/pecl/snaps/redis
http://windows.php.net/downloads/pecl/releases/igbinary
注意选择和你自己的环境一致的版本。
我这里是PHP7.3.4的非线程安全版,所以我选了
2、解压后,将php_redis.dll、php_redis.pdb、php_igbinary.dll、php_igbinary.pdb
拷贝至php的ext目录下
3、修改配置文件php.ini,在该文件中加入:
extension=php_igbinary.dll
extension=php_redis.dll
注意:extension=php_igbinary.dll一定要放在extension=php_redis.dll的前面,否则此扩展不会生效
4、重启服务器后,使用phpinfo查看扩展是否成功安装
服务端(Linux端)需要做的事
1、下载Redis6
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
2、解压
tar xzf redis-6.2.6.tar.gz
3、移动redis目录,一般都会将redis目录放置到 /usr/local/redis目录:
mv redis-6.2.6 /usr/local/redis
4、编译并安装redis,进入redis安装目录,执行make命令编译redis:
cd /usr/local/redis
make
等待make命令执行完成即可。
5、make命令执行完,redis就编译完成了。执行下面命令安装redis,并指定安装目录
make install PREFIX=/usr/local/redis
6、进入redis安装目录,执行下面命令启动redis服务
./bin/redis-server redis.conf
此时,可以看到redis服务被成功启动:
但这种启动方式不能退出控制台,如果退出,那么redis服务也会停止。如果想要redis以后台方式运行,需要修改redis的配置文件:redis.conf。将该配置文件中的daemonize no改为daemonize yes即可:
修改完成后,重新执行启动命令启动redis,然后通过下面命令查看redis进程,可以发现redis服务已经被启动了:
ps -ef | grep redis
通过redis-cli测试redis是否可用,在redis安装目录执行下面命令:
./bin/redis-cli
Window客户端连接Linux服务端需要做的配置
设置防火墙
方案1:
开启防火墙端口 firewall-cmd --add-port=6379/tcp --permanent
查看端口占用情况 firewall-cmd --list-ports
重启防火墙 firewall-cmd --reload
方案2:
1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。
2、然后在下方可度以查看得到“active(running)”,此时说明防火墙已经被打开了。
3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。
4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。
5、再在命令行中输入命令“systemctl disable firewalld.service”命令,即可永久关闭防火墙。
修改Redis的配置文件
默认只能127.0.0.1连接,绑定连接
这里需要注释掉。
设置密码,找到requirepass并去掉前面的注释,注意前面不能预留空格
requirepass root
关闭protected-mode设置为no,此时外部网络可以直接访问;
把protected-mode 设置为yes 更安全,需要配置bind ip或者设置访问密码
配置文件设置访问密码:
另外,也可以直接在CentOS7本地客户端设置密码,启动本地客户端
./bin/redis-cli
config get requirepass
config set requirepass root
Window客户端软件连接测试PHPStudy自带工具连接:
Windows客户端代码连接测试:
测试结果:
踩坑:刚开始死活连接不上,我怀疑是Windows上PHP的Redis扩展的版本和Linux上的Redis(服务端)版本必须一致才行,因此折腾了好久。后来发现客户端和服务端版本没必要一致。