必须在 config/cache.php 的 redis store 中配置 'prefix',因为 laravel 缓存层(redisstore)负责拼接前缀,而 database.php 仅管理连接参数,不参与 key 构建。

直接在 config/cache.php 的 redis store 配置里加 'prefix' 就行,不需要动 config/database.php 或扩展本身。
为什么 prefix 必须配在 cache.php 而不是 database.php
因为 phpredis 客户端本身不处理 key 前缀逻辑——它是 Laravel 缓存层(Illuminate\Cache\RedisStore)在写入/读取前自动拼接的。database.php 里的 redis 配置只管连接,不参与缓存 key 构建。
-
config/database.php中的'default'或'cache'连接定义,只决定用哪个 host/port/database,跟 key 名无关 -
config/cache.php中的'redis'store 才是真正控制缓存行为的地方,'prefix'在这里生效 - 若你在 database.php 里手动给 connection 加
'prefix'字段,它会被完全忽略
如何正确配置 redis store 的 prefix
打开 config/cache.php,找到 'stores' => ['redis' => [...]] 这一段,在数组里加入 'prefix' 键:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
'redis' => [
'driver' => 'redis',
'connection' => 'cache', // 确保这个值对应 config/database.php 里的连接名(如 'cache')
'prefix' => 'laravel_cache:', // ← 就是这里
],
- 值建议以英文冒号结尾(如
'laravel_cache:'),避免和其他 key 混淆 - 不要用
env()包裹 prefix —— 它不支持运行时动态解析,硬编码最稳 - 如果同时用了 session 和 cache,session 的 prefix 在
config/session.php的'prefix'字段单独配,别混用
配完 prefix 后必须验证是否真生效
光改配置不测试,很容易以为成功了,其实 key 还是没带前缀。最直接的方法是用 redis-cli 查看实际写入的 key:
- 先执行
Cache::store('redis')->put('test_key', 'ok', 300) - 再连 Redis:
redis-cli -h 127.0.0.1 -p 6379 -n 1(注意 -n 要匹配你 config/database.php 里'cache'的database值) - 运行
keys *test_key*,如果返回"laravel_cache:test_key"才算对;如果只返回"test_key",说明 prefix 没生效 - 常见失效原因:store 名写错(比如用了
Cache::put()却没配好 default store)、connection值和 database.php 不一致、config 缓存没清(记得跑php artisan config:clear)
prefix 是个简单字段,但它的作用范围非常窄——只影响通过 Cache:: 接口写入的 key,对直接调用 Redis:: 或队列、session 的 key 完全无效。别指望它能“全局统一”,每个组件得各自配。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










