1. 拉取redis镜像
# 拉取最新版redis(也可以指定版本号:docker pull redis:<verison>)
docker pull redis
2. 创建挂载目录
# 在宿主机上一次性创建多个目录
mkdir -p /docker/redis/{conf,data,log}
3. 配置
在宿主机的 /docker/redis/conf 目录下创建 redis.conf 文件,其配置内容如下:
注意:以下配置仅供参考,可根据实际情况进行调整和完善
# 基础配置
bind 0.0.0.0 # 允许 Redis 监听所有网络接口(即所有 IP 地址)的连接,生产环境建议绑定内网 IP,避免直接暴露在公网。
port 6379 # Redis 服务监听的端口号,默认是 6379。可修改为其他端口以增强安全性。
timeout 300 # 客户端连接空闲超过300秒(即5分钟)后自动断开,释放资源。
maxclients 10000 # 限制Redis同时支持的最大客户端连接数为 10000。超过此值会拒绝新连接。
daemonize yes # 以守护进程(后台)模式运行 Redis。在 Docker 中部署时需设置为 no,否则容器会立即退出。
# 持久化
save 900 1 # 在 900 秒(15 分钟)内,如果至少发生 1 次数据修改,则触发一次 RDB 快照保存。
save 300 10 # 在 300 秒(5 分钟)内,如果至少发生 10 次数据修改,则触发一次 RDB 快照保存。
save 60 10000 # 在 60 秒(1 分钟)内,如果至少发生 10000 次数据修改,则触发一次 RDB 快照保存。
dbfilename dump.rdb # RDB 快照的文件名,默认为 dump.rdb。
dir /data # RDB 快照和 AOF 文件的存储路径,需确保该目录已挂载到宿主机(如 /docker/redis 目录)。
appendonly yes # 启用 AOF(Append-Only File)持久化模式,记录所有写操作。
appendfsync everysec # AOF 日志同步策略:每秒同步一次磁盘,平衡性能与数据安全性(可选 always 或 no)。
# 安全
requirepass redis123 # 设置客户端连接密码,客户端需通过 AUTH 密码 认证后才能操作。生产环境必须设置强密码,避免使用简单密码。
rename-command FLUSHDB "" # 禁用 FLUSHDB 命令(清空当前数据库),防止误操作或恶意攻击。
rename-command FLUSHALL "FLUSHALL_ENCRYPTED" # 将 FLUSHALL 命令重命名为 FLUSHALL_ENCRYPTED,需使用新名称执行该命令。
# 内存管理
maxmemory 4gb # 限制 Redis 最大可用内存为 4GB,超出限制时根据策略淘汰数据。
maxmemory-policy volatile-lru # 当内存不足时,优先淘汰最近最少使用(LRU)的键(仅淘汰有过期时间的键)。allkeys-lru:所有键参与淘汰。volatile-ttl:淘汰剩余生存时间(TTL)最短的键。noeviction:禁止淘汰数据,直接报错(慎用)。
4. 授权
# 授权于文件所有者(读、写、执行)权限
# 授权于文件所属组(读、执行)权限
# 授权于文件所属组(读、执行)权限
# -R 表示递归,即 /docker/redis 目录及其子目录和文件都会应用此权限设置
chmod 755 -R /docker/redis
5. 启动
docker run -d \
--name redis \
-p 6380:6379 \
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /docker/redis/data:/data \
-v /docker/redis/log:/var/log/redis \
redis \
redis-server /etc/redis/redis.conf