工作的有个网站由于搭建的是集群环境,涉及到session的管理问题,比较好的解决方案时将session存储到redis缓存中。
1 安装redis
通常情况下,centos通过以下命令即可安装好redis:
yum -y install redis
如果提示找不到redis,可以添加第三方的yum源:
去下面的网站下载EPEL对应的版本:(epel是fedora维护的yum源,里面软件众多)
http://fedoraproject.org/wiki/EPEL
我下载的是这个:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
或者
http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
安装epel:
rpm -ivh epel-release-6-8.noarch.rpm
执行安装
yum -y install redis
服务的启动与停止
service redis start # 启动
service redis stop # 停止
service redis restart # 重启
测试
[vagrant@localhost ~]$ redis-cli
127.0.0.1:6379> set foo 33
OK
127.0.0.1:6379> get foo
"33"
此时,安装redis服务端的服务器可以连接上redis了,但是其他服务器无法连接到该服务器的redis上。原因有几个方面:
(1)服务器是否开启了防火墙,如果开启了,需要打开redis的端口
(2)redis默认bind了127.0.0.1这个ip,即只允许本机连接使用,所以需要修改redis的配置文件:
通过yum方式将redis的rpm包安装到本地机器之后,通过rpm -ql redis查看安装的目录,发现有28个目录文件
找到redis配置文件路径后,修改配置文件,将其中的bind 127.0.0.1 改成ip地址
修改后重启redis服务:
service redis restart
2 安装 php-redis 扩展
yum -y install php-redis
安装好redis扩展后,在phpinfo里面如果能看到redis的版本信息,则说明扩展安装成功。
3 测试
<?php
$redis = new Redis();
$redis->connect('192.168.1.5', 6379);
$redis->set("foo",22);
echo $redis->get("foo");
通过以上步骤,即完成了linux上的redis环境搭建及php的redis扩展的安装。
4 改变session存取方式
在session_start()之前插入一下代码:
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://192.168.1.5:6379");
@session_start();
修改后,安装了redis的服务器可以登录到该redis服务:
redis-cli -h 192.168.1.5
通过命令 KEYS * 观察存储情况。