应为缓存、Session 和队列分别配置独立的 Redis database(如 0、1、2),避免共用导致 cache:clear 清空 Session 登出用户、队列任务丢失及过期策略干扰;需在 config/database.php 定义三个连接,在 cache.php、session.php、queue.php 中显式指定对应连接名。

能共用,但不建议共用同一个 Redis database。共用会导致 php artisan cache:clear 清掉 Session、队列任务堆积时挤占缓存空间、过期策略互相干扰等实际故障。
为什么 cache:clear 会登出用户?
因为 Laravel 默认把缓存和 Session 都写进 Redis 的 database 0。执行 cache:clear 本质是调用 FLUSHDB 命令——它清空当前选中的 database,Session 数据自然一并消失。
- 即使你没改过配置,
config/database.php里'default' => [... 'database' => 0]就是罪魁祸首 -
config/session.php中'connection' => null表示回退到默认连接,也就是database 0 - 这个行为在 Laravel 5.8–11.x 全系都存在,不是 bug,是设计如此
队列要不要单独配 database?
要。Laravel 队列(尤其是 redis driver)默认也走 default 连接,即 database 0。一旦缓存爆满或被清空,队列任务可能丢失、延迟甚至无法入队。
批量分析录音转写,输出多维度拓客报告。触发词:录音分析、总结、音频总结、拜访记录总结。当用户提及「分析录音」「看看录音数据」「最近的录音」「通话记录」且意图为批量统计/分析时触发。仅出现「录音」或「拜访」时需结合上下文,若仅查看单条详情则不触发。
- 在
config/queue.php的connections.redis下加'connection' => 'queue' - 然后在
config/database.php的redis数组里定义'queue'连接,'database' => 2(避开 0 和 1) - 注意:Laravel 不会自动为队列创建独立 database,必须手动配连接 + 指定
database值
三个组件怎么安全分库?
核心就三点:配三个连接名(default、session、queue),每个连不同 database,再在对应组件配置里显式指定连接名。
-
config/database.php中redis数组下定义三个子项:default(database => 0)、session(database => 1)、queue(database => 2) -
config/cache.php保持'connection' => 'default'(默认已设好) -
config/session.php改为'connection' => 'session' -
config/queue.php的redis连接里设'connection' => 'queue' - 别漏环境变量:
.env里确保CACHE_DRIVER=redis、SESSION_DRIVER=redis、QUEUE_CONNECTION=redis
Redis 的 16 个 database 是逻辑隔离,不是物理隔离;但对 Laravel 来说,这是最轻量、最可控的分治手段。真正上线后,如果流量大或数据敏感,再考虑拆 Redis 实例——别一开始就过度设计,但也别等到 cache:clear 把登录态全干掉才想起来分库。

















