Redis Session 数据只存于 Redis 实例中,与 MySQL 和 phpMyAdmin 完全无关;只要 SESSION_DRIVER=redis 生效,Laravel 就不会写入 sessions 表,新会话数据仅可通过 redis-cli(如 keys laravel_session:*)查看。

phpMyAdmin 根本查不到 Redis Session —— 因为它压根不存 MySQL 里
你不是配错了,是找错地方了。Redis Session 数据只存在于 Redis 实例中,和 MySQL、phpMyAdmin 完全无关。只要 SESSION_DRIVER=redis 生效,Laravel 就不会碰 sessions 表,哪怕这张表存在、甚至有数据,也和当前会话完全隔离。
为什么 phpMyAdmin 里 session 表空或没更新
常见误解是“切到 redis 驱动后 session 表应该自动停用”,但其实:
- 如果之前用过 database 驱动,sessions 表里可能还有旧数据,但新请求绝不会写进去
- 如果表结构不对(比如 id 是 INT 而非 VARCHAR(255)),哪怕驱动设成 database 也写不进,更别说 redis
- phpMyAdmin 对 Redis 没有任何可见性,它连 Redis 连接入口都没有
怎么确认 Redis Session 真的在工作
- 先确保
phpredis扩展已启用:php -m | grep redis,只装predis/predis不够,Laravel 10+ 默认走phpredis - 运行
php artisan tinker,执行:Redis::connection('session')->ping(),返回"PONG"才算通 - 检查
config/session.php中'connection' => 'session'是否和config/database.php里redis.connections.session名称一致 - 别忘了前缀:
keys laravel_session:*(默认前缀)—— 在redis-cli里先select 2(如果你配的是database => 2),再执行该命令
Session 写进去了却读不到?重点看这三处
现象是 $request->session()->put('x', 'y') 没报错,但下个请求取不到:
- 路由没走
web中间件组:写在routes/api.php的路由默认不加载StartSession,必须显式加->middleware(['web']) - 浏览器 Cookie 被拦截:跨域请求时前端没设
withCredentials: true,或后端没回Access-Control-Allow-Credentials: true - Session ID 没闭环传递:切换驱动后旧
laravel_sessionCookie 还在浏览器里,但 Redis 里没对应 key,结果就是“登录态丢失”—— 清掉 Cookie 或换浏览器测试最直接
Redis Session 的关键不在“存哪”,而在“连没连上”和“中间件包没包住”。一旦连通性验证通过,redis-cli 就是最准的观测点;phpMyAdmin 在这个场景里,只是个误入现场的旁观者。
立即学习“PHP免费学习笔记(深入)”;



















