跳至正文

PHP 使用 Redis 实现 Session 共享

  小型 web 服务,session 数据基本是保存在本地(更多是本地磁盘文件),但是当部署多台服务,且需要共享 session,确保每个服务都能共享到同一份 session 数据。

  redis 数据存储在内存中,性能好,配合持久化可确保数据完整。

1、通过 php 自身 session 配置实现

修改 php.ini 文件:

# 使用 redis 作为存储方案
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
# 若设置了连接密码, 则使用如下
session.save_path = "tcp://127.0.0.1:6379?auth=密码"

修改完成后,重启PHP服务使之生效。

2、通过项目配置文件实现

如果不喜欢修改系统 PHP 环境配置,也可以在项目代码中添加代码来实现:

<?php
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");

3、测试

<?php
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");

session_start();
echo "<pre>";
$_SESSION['usertest'.rand(1,5)]=1;
var_dump($_SESSION);

echo "</pre>";

4、输出结果

array(2) {
  ["usertest1"]=>
  int(88)
  ["usertest3"]=>
  int(1)
}

usertest1|i:1;usertest3|i:1;