php 使用 redis 保存 session

使用步骤

  • 首先要安装phpredis扩展
  • 配置session支持redis
  • 启用session

安装 phpredis 扩展

参考项目地址中介绍的安装方法 地址,其实就是 php 使用 phpize 编译安装扩展的方法

配置session支持redis

  1. 即时配置,直接在php文件中配置,只是运行脚本中生效

    1
    2
    ini_set('session.save_handler','Redis');
    ini_set('session.save_path','tcp://localhost:6379');
  2. 配置php.ini,全局生效,配置完记得重启http服务器

    1
    2
    3
    4
    5
    6
    7
    session.save_handler = redis
    //多节点
    session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5,tcp://ip2:port2?weight=2"
    //单个节点
    session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5"
    //socket 方式
    session.save_path = "unix:///var/run/redis/redis.sock?persistent=1&weight=1&database=0"

上面两种配置方式,可以根据自己的需求进行配置。

使用方式

配置完之后就可以使用session了,使用方法不变,但是保存的驱动已经修改

1
2
session_start();
$_SESSION['s1'] = 'demo session'; // 这样 session 就存储在 redis 中

在redis中查看session的方法

1
2
3
4
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
//redis用session_id作为key并且是以string的形式存储
echo $redis->get('PHPREDIS_SESSION:' . session_id());

session过期时间配置

1
2
使用 php.ini 中的 session.gc_maxlifetime
可以通过 ini_set 在 php 中自定义。

补充说明

配置参数说明:

  • ip: Redis 节点的 IP。
  • port: Redis 节点的端口。
  • auth: 与 Redis 节点进行权限验证。
  • weight: 权重,上面的例子表示 session 数量,ip2 节点 是 ip1 节点的两倍。
  • timeout: Redis 连接超时时间。单位:秒。连接失败时,Session 不可用(风险!)
  • persistent: 持久连接。
  • prefix: 前缀,默认是 PHPREDIS_SESSION:
  • database: 选择哪个 Redis 数据库。取值:int。参见 Redis 配置

©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息

End

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay