首页 / 技术分享 / Redis 入门及实战案例 /
PHP 如何配置 Redis 保存 Session

PHP 如何配置 Redis 保存 Session

码不停提

2026-01-27
19 次浏览
0 条评论

当应用部署到多台服务器时,PHP 的原生 session(默认采用文件存储)无法做到会话共享。这时,将 session 存储到 Redis 等内存数据库,是分布式/集群网站的标准做法之一。

Redis 入门及实战案例
PHP
Redis
Session
分享:

一、PHP 配置 Redis 保存 Session

1. 安装 Redis 与扩展

  • 安装 Redis 服务端 参考官网/包管理器启动 Redis(如:sudo apt install redis-server)。

  • 安装 PHP Redis 扩展 建议用 phpredis 扩展,安装命令如下:

    # 对于 Debian/Ubuntu
    sudo apt install php-redis
    # 或源码编译
    pecl install redis

2. 修改 PHP 配置

编辑你的 php.ini 文件(可用 php --ini 查到当前环境生效的 php.ini)。

; session 保存方式为 redis
session.save_handler = redis

; Redis 连接地址(单台 redis 服务)
session.save_path = "tcp://127.0.0.1:6379"

; (可选,指定多个 Redis ���例实现高可用)
; session.save_path = "tcp://10.0.0.1:6379,tcp://10.0.0.2:6379"

补充:如果 Redis 需要密码,可这样配置 session.save_path = "tcp://127.0.0.1:6379?auth=你的密码"

3. 代码中和往常 session 用法一致

session_start();
$_SESSION['user_id'] = 10086;
echo $_SESSION['user_id'];

你无需更改任何其它 session 操作代码(如 set、get、unset 等),底层会自动将 session 数据通过 redis 存储与读取。


二、扩展:Redis Session 与 PHP 原生 Session 的对比

特性 PHP 原生文件 Session Redis Session
存储方式 文件系统(如 /tmp 目录) 内存数据库 Redis
访问速度 较慢(受磁盘 I/O 限制) 极快(基于内存,网络传输也很快)
分布式支持 天生不支持,多机访问不共享 原生支持,Session 可被多台主机访问共享
持久性/可靠性 依赖磁盘,不易丢失 默认在内存中,可配置持久化策略
并发能力 高并发下易锁冲突(Flock) Redis 原生支持高并发
清理方式 PHP 定时垃圾回收(可能积累垃圾) Redis 过期键自动淘汰,管理便捷
依赖 操作系统磁盘即可 需安装并维护 Redis 服务
数据安全 锁目录风险、权限设置 Redis 自身权限机制,加强网络安全防护

优势

  • Redis Session

    • 支持多台服务器/负载均衡(真正的“无状态”Web服务)
    • 内存存储,读写效率高,明显优于磁盘文件
    • 内置过期策略,自动清除过期会话,不留垃圾
    • 数据可持久化,丢失数据风险可控
    • 适合高并发、大流量业务
  • PHP 原生 Session

    • 简单易用,无第三方依赖
    • 开发/单机环境下足够

劣势

  • Redis Session

    • 需要额外部署并维护 Redis 服务
    • Redis 故障时所有会话功能将受影响,需要高可用架构
    • session 数据体积受限于内存,不适宜存超大对象
  • PHP 原生 Session

    • 难以扩展分布式和高并发
    • 文件垃圾清理、目录权限等问题需人工运维
    • 读写速度易受磁盘性能及锁影响

三、适用场景建议

  • 单一服务器/站点访问量小:文件 session 足矣。
  • 分布式集群/需要多端共享登录:强烈推荐 Redis Session。
  • 高并发大型站点/性能敏感业务:Redis Session 不可替代,建议配置主从+Sentinel+持久化做高可用。

四、参考资料


评论区 (0)

你需要先 登录 后才能发表评论。
还没有人评论,赶快成为第一个吧。