phpenv不管理redis内存,maxmemory必须在redis.conf中手动配置并重启服务,或通过redis-cli config set临时设置;界面无此选项是设计使然,生效以info memory输出为准。

phpEnv 本身不管理 Redis 内存,maxmemory 必须在 Redis 配置文件或启动时设置,phpEnv 只是提供快捷启停界面。
phpEnv 界面里找不到 maxmemory 设置项
phpEnv 的图形界面(如“服务管理”或“Redis 配置”页)通常只暴露端口、密码、开机自启等基础参数,maxmemory 和 maxmemory-policy 不在其默认配置表单中。这不是遗漏,而是设计使然——这些属于 Redis 核心资源策略,需手动干预配置文件。
- 打开 phpEnv 安装目录下的
redis\redis.conf(路径类似C:\phpEnv\phpenv\redis\redis.conf或/opt/phpenv/redis/redis.conf) - 搜索
# maxmemory,去掉注释并补全单位,例如:maxmemory 512mb(严禁写成maxmemory 512,否则被解析为 512 字节) - 必须紧跟着配
maxmemory-policy,例如:maxmemory-policy allkeys-lru;不设等于白设,写入会直接报(error) OOM command not allowed when used memory > 'maxmemory' - 保存后,**必须重启 Redis 服务**:在 phpEnv 界面点“重启”或命令行执行
phpenv service redis restart
用 redis-cli CONFIG SET 临时生效但不持久
如果只是调试或验证淘汰逻辑,可以跳过改配置文件,直接连上 Redis 执行:
redis-cli CONFIG SET maxmemory 512mb redis-cli CONFIG SET maxmemory-policy allkeys-lru
但要注意:
- 该设置在 Redis 进程重启后丢失,phpEnv 重启服务即清空
-
CONFIG REWRITE在 phpEnv 环境下往往无效:它只写入运行时通过CONFIG SET修改过的参数,而maxmemory属于启动加载项,CONFIG REWRITE不会把它写回redis.conf - 若 phpEnv 启动 Redis 时未指定配置文件路径(比如直接调用
redis-server而非redis-server /path/to/redis.conf),那所有配置都失效,maxmemory回退为 0(无限制)
Windows 下 phpEnv 常见陷阱:配置文件没被真正加载
phpEnv 默认可能用精简版启动脚本,绕过 redis.conf。验证是否生效最简单的方法是:
redis-cli INFO memory | findstr "used_memory maxmemory"
如果返回的 maxmemory:0,说明配置没加载成功。此时要检查:
- phpEnv 的 Redis 启动命令是否显式带了配置路径(打开任务管理器 → 查看
redis-server.exe的命令行参数) - 确认你编辑的是它实际加载的那个
redis.conf,而不是 phpEnv 安装包里自带的模板文件 - Windows 权限问题:修改
redis.conf后保存失败(尤其在Program Files下),建议用管理员权限运行编辑器
真正起作用的永远是 Redis 进程启动时读到的那个 redis.conf,phpEnv 只是外壳。别依赖界面按钮,盯住 INFO memory 输出里的 maxmemory 数值和 mem_fragmentation_ratio 才算落地。碎片率超过 1.5 时,即使 maxmemory 没触顶,物理内存也可能被吃光。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











