前言
小型web服务, session数据基本是保存在本地(更多是本地磁盘文件), 但是当部署多台服务, 且需要共享session, 确保每个服务都能共享到同一份session数据.
redis 数据存储在内存中, 性能好, 配合持久化可确保数据完整.
设计方案
1. 通过php自身session配置实现
附加知识:
我们可以看到PHP默认的的session配置使用文件形式保存在服务器临时目录中。
这里选择把session存储在redis中。修改php.ini,把默认配置修改为
1
2
3
4
5
6 1# 使用 redis 作为存储方案
2session.save_handler = redis
3session.save_path = "tcp://127.0.0.1:6379"
4# 若设置了连接密码, 则使用如下
5session.save_path = "tcp://127.0.0.1:6379?auth=密码"
6
测试代码
1
2
3
4
5
6
7
8
9
10
11
12 1<?php
2ini_set("session.save_handler", "redis");
3ini_set("session.save_path", "tcp://127.0.0.1:6379");
4//以上的代码 若是在php.ini配置文件修改了,就没必要再需改了
5
6session_start();
7echo "<pre>";
8$_SESSION['usertest'.rand(1,5)]=1;
9var_dump($_SESSION);
10
11echo "</pre>";
12
输出结果
1
2
3
4
5
6
7
8 1array(2) {
2 ["usertest1"]=>
3 int(88)
4 ["usertest3"]=>
5 int(1)
6}
7usertest1|i:1;usertest3|i:1;
8
评价
- 优点: 实现简单, 无需修改php代码
- 缺点: 配置不支持多样化, 只能应用于简单场景