Redis 7.2 编译必须加 BUILD_TLS=yes 和 BUILD_WITH_JEMALLOC=yes,否则将导致连接加密失败、内存抖动及 AOF rewrite 卡顿;启动报“Memory overcommit must be enabled”需设 vm.overcommit_memory=1。

直接装 Redis 7.2 没问题,但别用 make install 默认路径,也别跳过 BUILD_TLS=yes 和 BUILD_WITH_JEMALLOC=yes 这两个关键编译参数——否则你后续会遇到连接加密失败、内存分配抖动、AOF rewrite 卡顿等隐性问题。
redis-server 启动报错 “Memory overcommit must be enabled” 怎么办
这不是 Redis 配置错误,是 Linux 内核限制。Redis 的 fork() 子进程做 RDB 或 AOF rewrite 时,需要临时申请与当前内存等量的虚拟地址空间;若 vm.overcommit_memory 关闭(默认值为 0),内核会拒绝该请求,导致持久化失败或主从同步中断。
- 临时生效(验证用):
sudo sysctl vm.overcommit_memory=1 - 永久生效:向
/etc/sysctl.conf追加一行vm.overcommit_memory = 1,再执行sudo sysctl -p - 注意:这个设置对所有进程生效,不是 Redis 独有;生产环境建议搭配
maxmemory使用,避免 OOM Kill
为什么推荐用 make BUILD_TLS=yes 而不是默认编译
Redis 7.2 默认不启用 TLS,redis-cli -u rediss://... 或客户端直连会报 ERR Client sent AUTH, but no password is set 类似错误——实际是握手失败被静默降级了。启用 TLS 后,服务端才能真正响应加密连接请求。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 编译时必须加
BUILD_TLS=yes,否则redis-server --tls-port 6380启动直接报错Unknown option or number format - 需额外提供证书:
--tls-cert-file、--tls-key-file、--tls-ca-cert-file缺一不可 - OpenSSL 版本需 ≥ 1.1.1;CentOS 7 自带 OpenSSL 1.0.2,必须先升级,否则编译阶段就失败
systemd 服务文件里 supervised systemd 和 daemonize yes 冲突吗
冲突,而且是硬冲突。Redis 7.2 明确要求:当使用 systemd 管理时,supervised systemd 必须为 yes,且 daemonize 必须为 no。设成 daemonize yes 会导致进程 double-fork,systemd 丢失主进程 PID,表现为 systemctl status redis 显示 inactive (dead),但 ps aux | grep redis 却能看到进程在跑。
- 正确配置项组合:
supervised systemd+daemonize no - 服务文件中
Type=必须是simple(不能是forking),否则 systemd 无法正确追踪进程生命周期 - 日志会自动进入 journalctl:
journalctl -u redis -f可实时查看,无需手动配置logfile
docker run 启动 redis:7.2 容器后无法访问 6379 端口
常见于宿主机防火墙未放行,或容器启动时没指定 --network host / -p 映射。但更隐蔽的问题是:Redis 7.2 镜像默认启用 protected-mode yes,且只绑定 127.0.0.1 ——即使你加了 -p 6379:6379,外部请求仍被拒绝。
- 必须显式覆盖 bind 和 protected-mode:
redis-server --bind 0.0.0.0 --protected-mode no - 若需密码,追加
--requirepass YourPass;注意不要写成redis-server --requirepass ... /path/to/redis.conf,顺序错会导致参数被忽略 - 挂载自定义配置时,确保
redis.conf中的bind和protected-mode已修改,否则镜像内置默认值仍生效
Redis 7.2 的 TLS、jemalloc、AOF rewrite 优化都依赖编译期决策,运行时无法补救。装完之后别急着连客户端,先用 redis-server --version 确认输出里含 malloc=jemalloc-5.3.0 和 ssl=openssl 字样,再往下走。

















