Laravel 8中Redis已设缓存键但客户端无法列出键的问题
Laravel 8 Redis缓存CLI看不到键的问题排查与解决
原因1:Laravel缓存键自带前缀
Laravel的缓存系统默认会给所有缓存键添加前缀,默认前缀是laravel_cache。你代码里用\Cache::put($keyName, ...)存储的键,实际在Redis里是laravel_cache:$keyName,直接执行KEYS *自然匹配不到。
解决:
- 直接在Redis CLI里执行带前缀的匹配命令:
KEYS "laravel_cache:*",就能看到Laravel生成的缓存键。 - 若想取消前缀,编辑
config/cache.php,将prefix项设为空字符串,之后执行php artisan config:clear使配置生效。
原因2:Redis数据库实例不匹配
Laravel默认可能配置使用Redis的非0号数据库(比如db 1),而Node.js程序通常默认连接0号数据库。你可以查看config/database.php中redis.default.database的配置值,确认是否和你CLI连接的数据库一致。
解决:
- 在Redis CLI中切换到对应数据库,比如
SELECT 1,再执行KEYS *即可看到Laravel的缓存键。 - 或者修改
config/database.php里的redis.default.database为0,和Node.js保持一致,执行php artisan config:clear生效。
额外排查点
- 确认Laravel的Redis连接参数和CLI一致:检查
.env里的REDIS_HOST、REDIS_PORT、REDIS_PASSWORD,避免连到了不同的Redis服务器。 - 验证缓存驱动配置:确认
config/cache.php中default驱动确实是redis,避免配置未生效。 - 查看Redis日志:检查Redis服务器的日志文件,确认Laravel发送的SET命令是否成功执行,排除权限或连接异常。
内容的提问来源于stack exchange,提问作者PHP User
相关产品推荐
相关产品推荐

