php+redis实现多台服务器内网存储session并读取示例


Posted in PHP onJanuary 12, 2017

大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问题如何处理,说实话不处理session其实也是可以的,但是在实际的情况中会出现一些让用户体验非常蛋疼的问题,比如购物下单的时候负载均衡调配服务器来回切换的过程中session丢失了,这个时候就尴尬了,用户就会郁闷我擦这什么鬼,于是乎各种担心就会出现,这破网站是不是有什么安全问题等等。下面就来说说这个问题的解决方案,配置php结合redis来存储session,假如我现在有2个(至少)服务器在做负载均衡:

1,主服务器安装php-redis 以及redis服务器端这个不多说去执行命令行yum或apt-get什么的,辅服务器只需要安装php-redis(这两个服务器必须在一个内网中不然外网访问着实不安全的)

2,来吧骚年打开的你服务器上的php.ini文件:

先看看php extension=redis.so是否开启 

session.save_handler = redis

session.save_path = "tcp://【redis主服务器的内网ip】:6379″ 

主和辅服务器的php-redis需要绑定一下ip(ip一致主服务器的redis-server)

redis.conf

bind【redis主服务器的内网ip】

这个为了安全起见设置一个redis链接的密码:

打开 vim /etc/redis/redis.conf

requirepass 通信密码(修改这里)

ok配置好重启redis :

sudo service redis-server restart

3,测试Redis连接和验证:

redis-cli -h 【redis主服务器内网ip】

如果设置了redis链接密码,现在尝试访问数据,应该得到一个AUTH错误接下来执行下

> redis-cli

redis内网ip:6397> keys *

ok了到这步的时候已经完成99%了还差一步就是各种重启额

service apache2 restart

service php5-fpm restart

4,测试session是否写入redis:

<?php

 session_start();
$_SESSION['bieanju'] = array('name' => '别安驹', 'num' => 'http://www.bieanju.com/');
//连接redis
$redis = $this->connectRedis();
//
//检查session_id
echo 'session_id:' . session_id() . '<br/>';

//redis存入的session(redis用session_id作为key,以string的形式存储)
echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>';

echo 'php_session:' . json_encode($_SESSION['class']);
print_r($_SESSION['bieanju']);

?>

速来围观,没错session写入redis了可以读取了,ok至此对于负载均衡的session也就基本解决了,剩下的就是在项目如何应用那就看你自己的业务需要。

 最后在说一下php是世界上最好的语言,呵呵……

PHP 相关文章推荐
介绍几个array库的新函数 php
Dec 29 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
yii上传文件或图片实例
Apr 01 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 #PHP
YII2 实现多语言配置的方法分享
Jan 11 #PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 #PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 #PHP
php实现36进制与10进制转换功能示例
Jan 10 #PHP
php获取当前url地址的方法小结
Jan 10 #PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 #PHP
You might like
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
js实现消息滚动效果
2017/01/18 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
Python中编写ORM框架的入门指引
2015/04/29 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
python中hashlib模块用法示例
2017/10/30 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Python 操作 MySQL数据库
2020/09/18 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
个人评价范文分享
2014/01/11 职场文书
关爱留守儿童标语
2014/06/18 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
正确使用MySQL update语句
2021/05/26 MySQL
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers