将php的session存放到redis

通常我们将 session 存储到 file 或者 memcached

现今异地结构一体化,通常许多人会将 session 存储在 redis 里面

准备:

PHP 8.2.16

Pecl_Redis 6.0.1

安装拓展:

1
2
3
4
5
6
7
8
wget https://pecl.php.net/package/redis/6.0.1
mv redis-6.0.1.tgz php-redis-6.0.1.tgz
tar -zxvf php-redis-6.0.1.tgz
mv redis-6.0.1 php-redis-6.0.1
cd php-redis-6.0.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改 php.ini 文件:

`vim /etc/php.ini`

追加 redis 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
extension = "/usr/local/php/lib/extensions/no-debug-non-zts-20220829/redis.so"

session.save_handler = redis # 默认的设置是file,这里改成redis

session.save_path = "tcp://192.168.2.11:6379?auth=passwd" # 这里填redis的连接配置参数
;session.save_path = "tcp://192.168.2.11:6379" # 如果redis不带密码,则使用这种配置

session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID # 这个名字可以自己改
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5

存储到 redis 里面的 keys 的名称是类似 PHPREDIS_SESSIONxxxxxxxxx ,我们只需要连接到 redis,并执行 keys PHPREDIS_SESSION* 即可列出全部的 sessionkeys.若存在则为成功。

keys PHPREDIS_SESSION* "PHPREDIS_SESSION:77fsmg64qqebooaotlue6050g7"

测试 php 脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// 启动会话
session_start();

// 配置 Redis 连接
$redis = new Redis();
$redis->connect('your_remote_redis_host', 6379); // 替换为你的远程 Redis 服务器地址和端口
$redis->auth('your_redis_password'); // 替换为你的 Redis 密码

// 配置 Redis 作为会话存储
ini_set('session.save_handler', 'redis');
// 替换为你的远程 Redis 服务器地址和端口
ini_set('session.save_path', 'tcp://your_remote_redis_host:6379');

// 尝试存储和获取会话数据
$_SESSION['test'] = 'Hello Redis';
echo $_SESSION['test'];

// 关闭 Redis 连接
$redis->close();
作者

Catooilg

发布于

2024-05-03

更新于

2025-02-10

许可协议

评论