• 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

  • 相关阅读:
    转载:一句代码改变Swing难看的字体
    生产者消费者问题c语言实现
    水题~~~~HDU 4788
    html中dom居中的5种方式
    scss中的三角函数
    nuxt基础Ⅱ
    nuxt基础Ⅰ
    win10软件安装出现错误代码2503/2502
    npm淘宝镜像安装
    axios的使用
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/6136513.html
Copyright © 2020-2023  润新知