Linux安装redis解决负载均衡中的session问题

工作的有个网站由于搭建的是集群环境,涉及到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 * 观察存储情况。

发表评论

邮箱地址不会被公开。 必填项已用*标注