在实际业务中,当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;//声明全局变量redisreturn $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

转载于:https://www.cnblogs.com/lizhaoyao/p/6136513.html

session 重写进入redis测试相关推荐

  1. session共享(redis实现)

    引言 大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的: 在我学习项目时遇到这样一个登录情景,假设有如下三台服务器(如 ...

  2. windows下php7.1安装redis扩展以及redis测试使用全过程

    最近做项目,需要用到redis相关知识.在Linux下,redis扩展安装起来很容易,但windows下还是会出问题的.因此,特此记下自己实践安装的整个过程,以方便后来人. 一,php中redis扩展 ...

  3. php session存到redis,php Session存储到Redis的方法

    php Session存储到Redis的方法 当然要写先安装php的扩展,可参考这篇文章:Redis及PHP扩展安装修改php.ini的设置 复制代码 代码如下: session.save_handl ...

  4. 8.redis解决分布式session问题 、redis在项目中难点

    a.什么是session session是一种会话技术,我们知道http是无状态协议的,就是这次连接传输数据后,下次连接服务器是不知道这次的请求是谁的,因此我们要做一个标记,让服务器知道每次请求是哪个 ...

  5. 【Redis学习02】基于session和基于redis实现登录功能

    文章目录 前言 1. 基于session实现短信登录功能 1.1 发送短信验证码 1.2 短信验证登录 1.3 登录校验功能 2. 集群的Session问题 3. 基于redis实现共享session ...

  6. 你的项目真的需要Session吗? redis保存session性能怎么样?

    在web开发中,Session这个东西一直都很重要,至少伴随我10年之久, 前一段时间发生一个性能问题,因为Redis session 问题,后来想想 其实我的项目session 是不需要的. 先看看 ...

  7. 分布式Session解决方案_Token + Redis

    接上一篇:分布式6大核心专题_分布式Session https://gblfy.blog.csdn.net/article/details/113802195 文章目录 1. 安装redis服务并启动 ...

  8. laravel redis_php session 存储到redis里

    此方法是通过php原生写法(或配置)实现的session入redis,但是在通常情况下, 大家都是通过相应的web框架进行开发工作, 所以实际操作时, 应该多去翻翻框架的官方文档, 看有没有提供相应方 ...

  9. 在spring MVC项目中集成Spring session redis (使用spring session框架,redis作为存储缓存)...

    2019独角兽企业重金招聘Python工程师标准>>> 1.为项目增加以来  pom.xml中使用 <!-- spring session 单点登录 --> //本项目使 ...

最新文章

  1. 用户层和内核层异常的处理流程
  2. Psych101(part8)--Day8
  3. SpringBoot 整合Redis报错:NoClassDefFoundError: redis/clients/util/SafeEncoder
  4. 打印循环换行_一个案例轻松认识Python 循环语句(for)——10以内的素数
  5. spring-in-action-mvc-jdbc搭建工程
  6. 高速掌握Lua 5.3 —— 扩展你的程序 (1)
  7. 809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。...
  8. 从源码理解Bean的生命周期执行顺序
  9. Java获取名字首字母拼音及用户按名字拼音分组工具
  10. php钱兆楼,PHP动态网站开发实例教程(第2版)
  11. ES3,ES5,ES6的区别
  12. 【PyQt5 知识点示例代码,2022年抓住金三银四涨薪好时机
  13. 华钜同创:亚马逊中常见的广告类型及其专业名词解释
  14. 【PG074】1 简略学习Aurora 64B/66B IP核
  15. 杰奇采集分页 php,修改杰奇1.7模板 给章节内容添加分页
  16. JavaScript插件开发
  17. Java2实用教程(第六版)第一章习题答案
  18. Java 代码界 3% 的王者?看我是如何解错这 5 道题的
  19. C语言课堂案例_求出小于或等于lim的所有素数并在a数组里,并返回素数的个数
  20. 一种独特的英语自学方法

热门文章

  1. crackme算法分析---CRC32算法的妙用
  2. dos拼接字符串以及截取字符串
  3. 基于 Spring Boot 的 Restful 风格实现增删改查
  4. 计算机网络基础知识,仅此一篇足矣
  5. 离职 10 天,仅面了 4 家公司,我的感受。。。
  6. 分享一个牛逼的阿里天猫面经,已经拿到 Offer ,来自朋友的朋友
  7. Java程序员必须掌握的常用Linux命令
  8. 人工智能是如何应用于智能交通领域
  9. Java 多线程三大核心
  10. Golang精编100题