惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
博客园 - 【当耐特】
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
美团技术团队
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
博客园_首页
A
About on SuperTechFans
MongoDB | Blog
MongoDB | Blog
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
B
Blog
The Register - Security
The Register - Security
I
InfoQ
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
Latest news
Latest news
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 叶小钗
L
Lohrmann on Cybersecurity
博客园 - Franky
Recent Commits to openclaw:main
Recent Commits to openclaw:main
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 星河赵

LangChain AI 客服 Agent 项目学习笔记 海外stripe 聚合支付 ffmpeg 介绍 AE中制作带可替换屏幕的视频模版 记录|AI超写实短视频制作流程+提示词 服务端部署Vue 在Pycharm 中使用 Python Module 方式启动 uvicorn Conda 虚拟环境完整指南 CentOS / OpenCloudOS 服务器如何安装远程桌面 Python 项目模块导入问题解决方案 2026 谷歌 Antigravity 最新安装教程! Vscode 常用配置 Vue 后台项目 Nginx 部署笔记(SPA / Vite 构建) Python -m 用法(极简版) Ubuntu 上安装 MongoDB 并启用事务的完整流程 mac 微信双开新方法 nginx 对静态资源进行压缩 HMAC-SHA256 请求签名与验签实践(Python 可直接复用) python fast api websocket 连接事例 在 Flask 中并发执行任务 Vscode 配置快捷键和JetBrains(pycharm)一样 Linux 服务器的 SSH 登录端口号 从默认的 22 改掉 配置 Docker 镜像加速器 python fast api 部署
如何修改 Redis 数据存放路径
星河赵 · 2025-12-31 · via 博客园 - 星河赵

Redis 默认数据存放路径一般是 /var/lib/redis,如果你想改为自定义路径(比如 /data/redis),需要注意系统级别的权限、systemd 配置和 Redis 自身配置,否则可能出现无法写入、MISCONF 等问题。下面是完整流程。


一、修改 Redis 配置文件

  1. 打开 Redis 配置文件(以 Ubuntu/Debian 为例):

sudo vim /etc/redis/redis.conf

  2.修改 dir 配置项为你的目标目录,例如:

  1. 保存退出。

注意:仅修改 redis.conf 并不保证 Redis 可以写入,systemd 的沙箱机制也可能阻止写入。

二、确保数据目录权限正确

  1. Redis 需要有写入权限,目录归属应为 redis 用户:

sudo mkdir -p /data/redis
sudo chown redis:redis /data/redis
sudo chmod 750 /data/redis

  2.父目录 /data 应该归 root 并且可访问:

sudo chown root:root /data
sudo chmod 755 /data

  3.(可选)如果启用了 SELinux,需要给目录打标签:

sudo semanage fcontext -a -t redis_var_lib_t "/data/redis(/.*)?"
sudo restorecon -Rv /data/redis

三、修改 systemd 配置(关键一步)

Redis 默认 systemd 单元对写路径有限制,只允许写 /var/lib/redis。如果目录不在这个列表,即使权限正确,RDB/AOF 也无法落盘。

1. 创建或修改 override 文件(推荐方法)

直接用 vim 编辑:

sudo mkdir -p /etc/systemd/system/redis-server.service.d
sudo vim /etc/systemd/system/redis-server.service.d/override.conf

在文件中写入:

[Service]
ReadWritePaths=/data/redis
TimeoutStopSec=5

2. 或者直接用命令生成 override 文件(更方便):

sudo mkdir -p /etc/systemd/system/redis-server.service.d
sudo tee /etc/systemd/system/redis-server.service.d/override.conf > /dev/null <<'EOF'
[Service]
ReadWritePaths=/data/redis
TimeoutStopSec=5
EOF

3. 让 systemd 生效并重启 Redis

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart redis-server
systemctl status redis-server

四、验证修改是否生效

  1. 检查 Redis 当前数据目录:

  2.手动触发一次 RDB 保存:

  3.检查 dump 文件是否生成:

ls -l /data/redis/dump.rdb

  4.测试写入是否正常:

redis-cli SET testkey "ok"
redis-cli GET testkey

如果没有报错且数据能写入,说明配置成功。

五、解决常见问题

问题原因解决方案
MISCONF Redis is configured to save RDB snapshots ... RDB/AOF 写入失败,stop-writes-on-bgsave-error= yes 修复目录权限 / systemd ReadWritePaths,或者临时执行 CONFIG SET stop-writes-on-bgsave-error no
kill -9 杀不掉 Redis systemd 拉起或进程卡在 D 状态 mask 服务 → kill → 修权限 → unmask → restart
Redis BGSAVE 失败 systemd 沙箱或 SELinux 拦截 修改 override.conf 或添加 SELinux 标签

六、总结关键点

  1. 修改 redis.conf 的 dir 只是第一步

  2. 确保目录权限:父目录 root,目标目录 redis:redis

  3. 修改 systemd override 的 ReadWritePaths,否则 Redis 无法写盘

  4. SELinux 需要打标签(如果启用)

  5. 启动前检查目录可写,并手动触发 BGSAVE

  6. 业务恢复时注意 stop-writes-on-bgsave-error