Redis替代文件存储session
2016-02-21 20:48
851 查看
php默认使用文件存储session,如果并发量大,效率会非常低。而redis对高并发的支持非常好,可以利用redis替换文件来存储session。
php存数session主要用到了session_set_save_handler.
sessionManager构造函数主要用来连接redis服务器,使用session_set_slave_handler函数并设置session回调函数,并调用session_start函数开启session功能。使用时,只需要包含sessionManager类,然后实例化一个sessionManager对象。下面是一个管理session的实例。session_set.php代码如下:
下面是读取session的代码.session_get.php代码如下:
分别访问session_set.php和session_get.php页面,我们会发现,已经可以成功的设置和获取session了
php存数session主要用到了session_set_save_handler.
在使用session_set_save_handler之前,先把php.ini配置文件的session.save_hadler选项设置为user
<?php class SessionManager{ private $redis; private $sessionSavePath; private $sessionName; private $sessionExpireTime=30; public function __construct(){ $this->redis = new Redis(); $this->redis->connect('127.0.0.1',6379); $retval = session_set_save_handler( array($this,"open"), array($this,"close"), array($this,"read"), array($this,"write"), array($this,"destroy"), array($this,"gc") ); session_start(); } public function open($path,$name){ return true; } public function close(){ return true; } public function read($id){ $value = $this->redis->get($id); if($value){ return $value; }else{ return ''; } } public function write($id,$data){ if($this->redis->set($id,$data)){ $this->redis->expire($id,$this->sessionExpireTime); return true; } return false; } public function destroy($id){ if($this->redis->delete($id)){ return true; } return false; } public function gc($maxlifetime){ return true; } public function __destruct(){ session_write_close(); } } ?>
sessionManager构造函数主要用来连接redis服务器,使用session_set_slave_handler函数并设置session回调函数,并调用session_start函数开启session功能。使用时,只需要包含sessionManager类,然后实例化一个sessionManager对象。下面是一个管理session的实例。session_set.php代码如下:
<?php include('SessionManager.php'); new SessionManager(); $_SESSION['username'] = 'captain'; ?>
下面是读取session的代码.session_get.php代码如下:
<?php include('SessionManager.php'); new SessionManager(); echo $_SESSION['username']; ?>
分别访问session_set.php和session_get.php页面,我们会发现,已经可以成功的设置和获取session了
相关文章推荐
- C++自制Redis 数据库(十二) 初级存储引擎已经测试完毕
- Redis消息队列发布微博
- spring aop自定义redis缓存实现
- Redis源码解析:07压缩列表
- 2. redis的数据类型
- redis密码设置、访问权限控制等安全设置
- 1. redis简介
- Redis性能测试
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- zabbix 自动发现监控redis
- centos上安装及配置redis cluster
- Redis教程(十二):服务器管理命令总结
- Redis服务器的启动过程分析
- 让Redis在你的系统中发挥更大作用的几点建议
- 64位Windows下安装Redis教程
- NoSQL和Redis简介及Redis在Windows下的安装和使用教程
- CentOS Linux系统下安装Redis过程和配置参数说明
- centos上安装及配置单台redis
- redis服务器搭建
- 如何在 Go 语言中使用 Redis 连接池-Radix.v2