参考资料

  1. Redis 6 种内存淘汰策略完整说明
  2. Redis7.4 内存淘汰策略说明
  3. 如何在 Redis 中配置 LFU 淘汰策略?
  4. RedisException vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php:122 OOM command not allowed when used memory > 'maxmemory'.
  5. OOM command not allowed when used memory > 'maxmemory' 表明 Redis 实例当前的内存使用量已经达
  6. LRU 和 LFU 的优缺点分别是什么?
  7. 如何配置 Redis 的淘汰策略?
  8. LRU vs LFU 核心区别

Laravel .env 中 Redis 相关配置(Redis7)

Laravel .env 中 Redis 相关配置(Redis7)

⚠️ 重点:.env 不能直接写 Redis 的 maxmemory /maxmemory-policy
.env 是 Laravel 应用层配置,Redis 内存淘汰策略属于 Redis 服务端配置,要在 redis.conf 或者 redis-cli 设置,.env 管连接信息,不控制 Redis 内存淘汰!

.env 里 Redis 连接配置示例

# Redis连接
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0

# 缓存使用Redis
CACHE_DRIVER=redis

# 队列使用Redis(⚠️ 队列建议单独Redis实例,不要和缓存共用!)
QUEUE_CONNECTION=redis

# Session 用Redis(可选)
SESSION_DRIVER=redis
SESSION_CONNECTION=default

config/database.php 补充(一般不用改,默认读取 env)

'redis' => [
    'client' => env('REDIS_CLIENT', 'phpredis'),
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD'),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],
],

缓存单独 Redis 实例(推荐!缓存用 allkeys-lru)

.env 配置多个 Redis 连接,缓存单独实例:

# 默认redis(队列、业务,策略noeviction,不能丢任务)
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0

# 缓存专用redis实例(单独端口,配置allkeys-lru)
REDIS_CACHE_HOST=127.0.0.1
REDIS_CACHE_PORT=6380
REDIS_CACHE_DB=0

CACHE_STORE=redis
CACHE_CONNECTION=cache

config/database.php 增加 cache 连接:

'redis' => [
    'client' => env('REDIS_CLIENT', 'phpredis'),
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD'),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],
    // 缓存独立实例
    'cache' => [
        'host' => env('REDIS_CACHE_HOST', '127.0.0.1'),
        'password' => env('REDIS_CACHE_PASSWORD'),
        'port' => env('REDIS_CACHE_PORT', 6380),
        'database' => env('REDIS_CACHE_DB', 0),
    ],
],

config/cache.php

'redis' => [
    'driver' => 'redis',
    'connection' => env('CACHE_CONNECTION','cache'),
],

Laravel 写缓存代码:一定要带过期时间(防止无 TTL key 堆积,从根源减少 OOM)

// ✅ 正确:带过期,3600秒
Cache::put('key', $value, 3600);

// ❌ 危险!永久key,不会自动过期,就算allkeys-lru也是内存满才会删
Cache::put('key', $value);

小结

  1. .env 只管连接地址、端口、密码;

  2. maxmemory / maxmemory-policy / LFU 参数是Redis 服务端配置,写 redis.conf,.env做不了;

  3. 最佳实践:缓存、队列分离成两个 Redis 实例

    • 缓存 Redis:maxmemory-policy allkeys-lru

    • 队列 Redis:maxmemory-policy noeviction,开启内存告警,禁止自动淘汰(job 丢了业务事故)

你要的话我给你 config/cache.php 完整文件。

AIGEO优化摘要

AI可读摘要:Laravel .env 中 Redis 相关配置(Redis7)⚠️ 重点:.env 不能直接写 Redis 的 maxmemory /maxmemory-policy.env 是 Laravel 应用层配置,Redis 内存淘汰策略属于 Redis 服务端配置,要在 redis.conf 或者 redis-cli 设置,.env 管连接信息,不控制 Re...
常见问题:
Laravel .env 中 Redis 相关配置(Redis7)主要讲了什么?

Laravel .env 中 Redis 相关配置(Redis7)⚠️ 重点:.env 不能直接写 Redis 的 maxmemory /maxmemory-policy.env 是 Laravel 应用层配置,Redis 内存淘汰策略属于 Redis 服务端配置,要在 redis.conf 或者 redis-cli 设置,.env 管连接信息,不控制 Re...

Laravel .env 中 Redis 相关配置(Redis7)适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读Laravel .env 中 Redis 相关配置(Redis7)时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:75/100
  • 建议补充封面或内容图片。
  • 建议补充标签,帮助识别主题边界。
作者:王壹杰
时间:2026-10-15
来源:https://bt.ciilii.com/