# Redis 服务配置与管理 本目录包含了GuardDoc服务器使用的Redis服务配置与管理脚本,基于Docker容器化部署,支持环境变量配置、安全密码管理和便捷的服务控制。 ## 目录结构 ``` redis/ ├── .gitignore # Git忽略文件 ├── README.md # 本文档 ├── conf/ # Redis配置文件目录(仅包含版本配置文件,供参考,未实际使用) ├── data/ # Redis数据持久化目录 ├── docker-compose.yml # Docker Compose配置文件 ├── init # 初始化脚本(环境配置、密码设置等) ├── redis-cli # Redis客户端连接工具 └── service # 服务控制脚本(启动、停止、重启等) ``` ## 初始化 在首次使用前,需要运行初始化脚本来配置环境和安全设置: ```bash cd /path/to/guarddoc-server/redis ./init ``` 初始化过程中,脚本会: - 检查必要的命令(如docker、openssl)是否已安装 - 创建必要的目录(如data、conf) - 交互式收集用户输入的配置项: - Redis密码(用于连接Redis服务) - 加密主密钥(用于加密存储Redis密码) - Redis版本(默认8.2) - Redis端口(默认6379) - 容器名称(默认redis) - 生成加密的密码文件和`.envrc`环境配置文件 - 自动配置direnv以加载环境变量 ## 环境变量加载 本项目使用direnv和`.envrc`文件管理环境变量,确保敏感信息安全存储: 1. 确保已安装direnv: ```bash # macOS brew install direnv # Linux sudo apt-get install direnv # Debian/Ubuntu # 或 sudo yum install direnv # CentOS/RHEL ``` 2. 在shell配置文件(如`~/.zshrc`或`~/.bashrc`)中添加: ```bash eval "$(direnv hook zsh)" # 对于zsh # 或 eval "$(direnv hook bash)" # 对于bash ``` 3. 每次进入redis目录时,direnv会自动提示输入主密钥以解密Redis密码: ``` direnv: error .envrc is blocked. Run `direnv allow` to approve its content ``` 首次进入时需要先运行: ```bash direnv allow ``` 然后根据提示输入主密钥。 ## 服务控制 使用`service`脚本控制Redis服务: ```bash # 启动服务 ./service start # 停止服务 ./service stop # 重启服务 ./service restart # 查看服务状态 ./service status # 查看帮助信息 ./service help ``` ## Redis客户端连接 使用`redis-cli`脚本连接到Redis服务: ```bash # 基本连接 ./redis-cli # 执行具体命令 ./redis-cli SET mykey "Hello Redis" ./redis-cli GET mykey # 查看所有键 ./redis-cli KEYS * # 更多redis-cli命令,请参考Redis官方文档 ``` 注意:客户端脚本会自动从环境变量加载Redis连接信息(主机、端口、密码),无需手动指定。 ## 配置修改 ### Redis配置文件 Redis的主要配置文件位于`conf/redis.conf`,可以根据需要修改以下关键配置: - 持久化设置(RDB/AOF) - 内存限制 - 连接数限制 - 日志级别 修改配置后,需要重启服务使更改生效: ```bash ./service restart ``` ### 容器配置 如果需要修改容器相关配置(如端口映射、资源限制等),可以编辑`docker-compose.yml`文件,然后重启服务。 ## 安全说明 1. Redis密码使用AES-256-CBC加密存储在`.envrc`文件中 2. 加密主密钥不会保存在任何文件中,需要用户在加载环境变量时手动输入 3. `.envrc`文件已添加到`.gitignore`中,避免敏感信息被提交到版本控制系统 4. 建议定期更新Redis密码和加密主密钥 ## 故障排查 1. **服务启动失败**:检查Docker是否正在运行,以及端口是否被占用 2. **连接失败**:确认主密钥输入正确,Redis服务已启动,密码配置正确 3. **数据问题**:检查data目录权限,确保Docker容器有写入权限 4. **环境变量加载失败**:确认direnv已正确安装和配置,`.envrc`文件存在且未被修改 ## 注意事项 1. 首次使用请务必运行`./init`脚本完成初始化配置 2. 请妥善保管加密主密钥,丢失后将无法恢复Redis密码 3. 定期备份data目录以防止数据丢失 4. 在生产环境中,请进一步加强Redis的安全配置,如绑定IP、限制访问等