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 ...
随机推荐
- Spring中的实例生成方式及其生命周期
三种实例化bean的方式1.使用类构造器实例化 <!-- 使用类构造器实例化,class属性表示要使用的类的全限定名 --> <bean id="userDao1" ...
- Android安全问题 程序锁
导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏 览. ...
- Linux用户空间与内核空间
源:http://blog.csdn.net/f22jay/article/details/7925531 Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针 ...
- 图模型的统计推断 inference in graphical models(马尔科夫链的推断)
有关因子图(factor graphs)以及其在sum product 算法,max-algorithm中的应用,将在一下篇博客中分享. 谢谢您的关注,欢迎提出意见问题.
- SQLite支持的SQL数据操作
事务处理 Posted on 2013 年 1 月 1 日 by 林溪 事务为一组SQL命令的集合,这些SQL命令在执行时不可进行分割,即要么全部执行这些SQL命令,要么一个都不进行执行,事务操作 ...
- c++ 头文件 及 sort
c++ sort :http://www.16kan.com/post/997260.html http://wenku.baidu.com/view/e064166daf1ffc4ffe47ac6 ...
- Java线程池的工作原理与实现
简单介绍 创建线程有两种方式:继承Thread或实现Runnable.Thread实现了Runnable接口,提供了一个空的run()方法,所以不论是继承Thread还是实现Runnable,都要有自 ...
- Java中的字符串驻留(String Interning)
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- 【转】google play上传应用
原文网址:https://support.google.com/googleplay/android-developer/answer/113469?hl=zh-Hans 注册 Google Play ...
- 【原】android通过adb wireless的使用
开发android程序,总是需要插拔插拔的,usb口都给弄坏掉了,现在adb可以通过无线网,链接处在同一个局域网下面的android设备 1.将电脑和移动设备链接到同一个无线网下 2.在android ...