session 重写进入redis测试
在实际业务中,当session存储过多 或者操作频繁,业务逐渐扩展的时候,文件存储已经无法满足session操作速度和需求,可以考虑用数据库或者nosql的redis来存储session,本文讲解如何用redis存储。数据库可以以此类推。
代码如下:
<?php
global $redis;//声明全局变量redis
$redis=new Redis();//实例化redis
$redis->connect('127.0.0.1', 6379);//连接redis
$redis->auth("redis的密码");//认证redis 请修改为你的密码 如果没有设置密码 注释该行代码
//从redis取数据
function get_redis($key)
{
global $redis;//声明全局变量redis
return $redis->get($key);//get获取值
}
//向redis存数据
function set_redis($key,$data,$expire_time=1800)
{
global $redis;//声明全局变量redis
$redis->set($key,$data,$expire_time);//set设置值
}
//开启session
function sess_open()
{ }
//关闭session
function sess_close()
{ }
//读取session sess_id就是 session_id
function sess_read($sess_id)
{
$val=get_redis($sess_id);
return(unserialize($val));
}
//写入session sess_id就是 session_id sess_data就是session的整个数据
function sess_write($sess_id, $sess_data)
{
set_redis($sess_id,serialize($sess_data));
session_commit();
}
//清除session
function sess_destroy()
{ }
function sess_gc()
{ }
//声明重写
session_set_save_handler(
'sess_open',
'sess_close',
'sess_read',
'sess_write',
'sess_destroy',
'sess_gc'
); session_start();
$_SESSION['user']=array("name"=>"hello","tel"=>"world");
register_shutdown_function('session_write_close');//注册事件 页面结束写入session 关闭session
exit(); ?>
redis管理工具中看到的截图

同样的,如果是数据库存储的话,可以建立一个 key value的数据库 session_id session_data两个字段就够了用来存储和更新。
Tips:session不采用文件存储还有一个好处 就是能够跨站共享,因为session被存储到后端的nosql数据库了,只要都连接这个后端数据,就能够共享session
session 重写进入redis测试的更多相关文章
- springboot项目中的普通Session和使用redis存储session
普通session: session store type使用来存放session的存储方式,目前Spring boot中只支持Redis方式, 由于本应用暂无需将session放入redis的需求, ...
- Session服务器之Redis
Session服务器之Redis Redis与Memcached的区别内存利用率:使用简单的key value (键值对)存储的话,Mermcached 的内存利用率更高,而如果Redis采用hash ...
- [redis] session 保存到 redis 简单实现
参考资料: [session保存到redis简单实现]http://blog.csdn.net/ppt0501/article/details/46700221 [Redis学习]http://blo ...
- Session for Tornado(Redis) - 代码分享
Session for Tornado(Redis) - 代码分享 Session for Tornado(Redis) session id的生成借用了web.py. 使用了 redis 的 h ...
- 将Session放入Redis
默认情况下,我们的PHP是以文件的形式保存Session数据,所以,每次读写会话信息,就需要去访问硬盘. 为了解决会话信息夸域名问题,即为了实现同一时刻只能一个地方登录,同时也解决读写会话信息必须访问 ...
- redis测试实践
最近测试服务端的时候,接触到了redis,之前也看过,但不系统,借着这次实践,记录一下. 一.写在前面 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的 ...
- windows下php7.1安装redis扩展以及redis测试使用全过程
最近做项目,需要用到redis相关知识.在Linux下,redis扩展安装起来很容易,但windows下还是会出问题的.因此,特此记下自己实践安装的整个过程,以方便后来人. 一,php中redis扩展 ...
- Django session存储到redis数据库
把session存储到redis数据库,需要在setting中配置 django-redis 中文文档 http://django-redis-chs.readthedocs.io/zh_CN/lat ...
- shiro-redis实现session存储到redis
shiro-redis开源项目已经很好的将shiro与redis整合到一起,实现了将session存入redis,可以方便的用于session共享实现集群部署. git地址:https://githu ...
随机推荐
- iOS 10 使用相机及相簿闪退的问题修正
http://www.cnblogs.com/onechen/p/5935579.html
- AC题目简解-数据结构
A - Japan POJ 3067 要两条路有交叉,(x1,y1)(x2,y2)那么需要满足:(x1-x2)*(y1-y2)<0判断出这是求逆序的问题 树状数组求逆序,先通过自定义的比较器实 ...
- 不能设置sublime text 2 为默认编辑器
今天遇到一个有趣的事情,当我设置 css 样式表的默认打开方式的时候,却始终无法设置成功,系统总是随机选取一种打开方式来打开文件.比如:pdf.DW.txt等方式. 我设置默认打开方式的步骤如下: 1 ...
- 转 Android adb root权限
永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...
- bzoj3157 3516
太神了,被数学题虐了 orz http://m.blog.csdn.net/blog/skywalkert/43970331 这道题关键是抓住m较小的特点,构造递推解决 ; ..,..] of lon ...
- SCOI2007蜥蜴
Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱 上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到 ...
- 8款JS框架比较
Dojo Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱.Dojo 很想做一个“大一统” ...
- [转] Splay Tree(伸展树)
好久没写过了,比赛的时候就调了一个小时,差点悲剧,重新复习一下,觉得这个写的很不错.转自:here Splay Tree(伸展树) 二叉查找树(Binary Search Tree)能够支持多种动态集 ...
- vim 退出保留显示的内容
/*************************************************************************** * vim 退出保留显示的内容 * 声明: * ...
- Java 7 Fork/Join 并行计算框架概览
应用程序并行计算遇到的问题 当硬件处理能力不能按摩尔定律垂直发展的时候,选择了水平发展.多核处理器已广泛应用,未来处理器的核心数将进一步发布,甚至达到上百上千的数量.而现在 很多的应用程序在运行在多核 ...