Skip to content

Docker 安装Redis

快捷启动

shell
docker run --rm -d --name redis -p 6379:6379 redis --requirepass "your_password"

命令介绍

  • docker run: 这是 Docker 命令的一部分,用于运行一个容器。
  • --rm: 这个选项告诉 Docker 在容器停止运行后自动删除容器。这意味着当你停止 Redis 容器时,相关的数据和配置都会被删除。
  • -d: 这个选项告诉 Docker 在后台运行容器,即“detached”模式,使得容器在后台运行而不占用你的终端窗口。
  • --name redis: 这个选项为容器指定一个名称,这里是“redis”,你可以用这个名称来管理和引用容器。
  • -p 6379:6379: 这个选项指定了端口映射,将 Redis 容器的6379端口映射到主机的6379端口,这样外部就可以通过主机的6379端口访问 Redis 服务。
  • redis: 这是要运行的 Docker 镜像的名称,即 Redis 镜像。Docker 会从 Docker Hub 下载 Redis 镜像(如果本地没有的话)并在容器中运行它。
  • --requirepass "your_password": 这个选项设置了 Redis 的访问密码为 "your_password"。这个密码在连接 Redis 时需要提供,以保护 Redis 数据免受未经授权的访问。

配置启动

创建文件夹

shell
mkdir -p /home/docker/redis/{data,conf}

设置权限

shell
sudo chown -R root /home/docker/redis

创建redis.conf

shell
sudo vim /home/docker/redis/conf/redis.conf
提示

若提示sudo: vim:找不到命令sudo: vim:command not find则去下载vim工具,然后再去创建redis.conf并粘贴内容

```shell

sudo yum install vim -y

```

redis.conf配置

# 开启无保护模式,允许远程连接
protected-mode no

# 监听端口
port 6379

# TCP 连接的最大等待队列长度
tcp-backlog 511

# Redis 访问密码,建议设置复杂密码
requirepass qwe123     

# 连接超时时间
timeout 0

# TCP 保活时间
tcp-keepalive 300

# 是否以守护进程方式运行
daemonize no

# 是否以守护进程方式运行的另一种配置方式
supervised no

# 进程 ID 文件路径
pidfile /var/run/redis_6379.pid

# 日志级别
loglevel notice

# 日志文件路径
logfile ""

# 数据库数量
databases 30

# 是否总是显示 Redis 标志
always-show-logo yes

# RDB 持久化策略
save 900 1
save 300 10
save 60 10000

# 在后台保存时出错是否停止写入
stop-writes-on-bgsave-error yes

# 是否启用 RDB 压缩
rdbcompression yes

# 是否启用 RDB 校验
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件保存路径
dir ./

# 复制节点是否服务过期数据
replica-serve-stale-data yes

# 复制节点是否只读
replica-read-only yes

# 是否启用磁盘无关同步
repl-diskless-sync no

# 是否禁用 TCP NoDelay
repl-disable-tcp-nodelay no

# 复制节点优先级
replica-priority 100

# 是否启用惰性释放机制
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

# 是否启用 AOF 持久化
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# 在 AOF 重写时是否关闭 fsync
no-appendfsync-on-rewrite no

# AOF 重写的触发条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否允许加载被截断的 AOF 文件
aof-load-truncated yes

# AOF 使用 RDB 头部
aof-use-rdb-preamble yes

# Lua 脚本执行时间限制
lua-time-limit 5000

# 慢查询日志最大长度
slowlog-max-len 128

# 通知的事件类型
notify-keyspace-events ""

# 压缩列表中哈希表的最大元素数量
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 压缩列表中列表的最大大小
list-max-ziplist-size -2

# 列表压缩深度
list-compress-depth 0

# 整数集合的最大元素数量
set-max-intset-entries 512

# 压缩列表中有序集合的最大元素数量
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# HyperLogLog 稀疏编码最大字节数
hll-sparse-max-bytes 3000

# Stream 节点的最大字节数和最大条目数
stream-node-max-bytes 4096
stream-node-max-entries 100

# 激活 rehashing
activerehashing yes

# 定期执行的执行频率
hz 10

# 动态调整 hz
dynamic-hz yes

# AOF 重写是否增量 fsync
aof-rewrite-incremental-fsync yes

# RDB 保存是否增量 fsync
rdb-save-incremental-fsync yes

启动redis

shell
docker run -d --name redis \
-p 6379:6379 \
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
--restart=always \
redis redis-server /etc/redis/redis.conf --appendonly yes

命令介绍

  • -d: 以“detached”模式运行容器,使容器在后台持续运行而不占用当前终端窗口。
  • --name redis: 为容器指定名称为 redis,以便后续管理和操作。
  • -p 6379:6379: 将容器内的 Redis 服务端口(默认为6379)映射到主机的6379端口,使得可以通过主机的6379端口访问 Redis 服务。
  • -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf: 将主机上的 Redis 配置文件 redis.conf 挂载到容器内的 /etc/redis/redis.conf 路径,让 Redis 容器使用指定的配置文件进行启动和配置。
  • -v /home/docker/redis/data:/data: 将主机上的 /home/docker/redis/data 目录挂载到容器内的 /data 目录,用于持久化存储 Redis 的数据文件,使得 Redis 容器中的数据可以持久化到主机上的指定目录。
  • --restart=always: 设置容器的重启策略为始终重启,即当容器退出时自动重新启动。
  • redis: 指定要运行的 Docker 镜像名称为 redis,表示从 Docker Hub 下载 Redis 镜像。
  • redis-server /etc/redis/redis.conf --appendonly yes: 指定 Redis 容器启动命令,告诉 Redis 服务器在容器内使用 /etc/redis/redis.conf 配置文件启动,并开启 AOF(Append Only File)持久化模式(--appendonly yes)。

开放端口

  • 开放端口6379端口

    shell
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
  • 重启防火墙

    shell
    firewall-cmd --reload

命令介绍

若是云服务器,需要在云服务厂商哪里开放规则