Skip to content

使用 Docker 安装 Redis ​

本页介绍单机开发环境的 Redis 安装。先确认 Docker 已安装且服务正在运行,再选择下面一种方式启动容器。设置 --requirepass "123456" 表示启用密码;它与“无密码”配置不同。

拉取镜像 ​

bash
docker pull redis

未指定标签时使用 redis:latest。用于固定环境时,应将下文所有 redis 镜像名统一替换为项目验证过的版本标签或摘要,避免重建时版本无意变化。容器启动与数据卷用法参见 Redis 官方 Docker 安装说明。

方式一:端口映射并设置密码 ​

bash
docker run -d --restart=always --name redis-server -p 127.0.0.1:6379:6379 -v redis-data:/data redis redis-server --appendonly yes --requirepass "123456"

这里的 123456 仅为演示密码,实际部署应替换为自己的强密码,并同步修改客户端配置。

参数作用
-d后台运行
--restart=always按 always 策略自动重启容器
--name redis-server容器名称,后续 exec、logs 等命令使用此名称
-p 127.0.0.1:6379:6379将容器端口映射到宿主机回环地址,只供本机访问
-v redis-data:/data使用命名数据卷保存 Redis 数据
redis redis-server使用 redis 镜像执行 Redis 服务进程
--appendonly yes开启 AOF 持久化
--requirepass "123456"启用密码认证

如果改为 -p 6379:6379,通常会在宿主机所有接口发布端口;需要远程访问时,应结合绑定地址和防火墙限制来源。数据卷会在容器重建后保留,但不代替备份。

方式二:笔者常用的 host 网络 ​

笔者更习惯在 Linux 服务器使用 host 网络:

bash
docker run -dit --restart=always --name redis-server --net=host -v redis-data:/data redis redis-server --appendonly yes --requirepass "123456"

-dit 是后台运行并保留交互终端;Redis 作为后台服务只用 -d 也可以。host 模式直接共享宿主机网络,因此不需要 -p,且宿主机的 6379 端口必须未被占用。使用 host 网络时同样应限制外部访问来源。

Docker Engine 的 host 网络适用于 Linux;Docker Desktop 4.34 及以上需要在设置中主动启用对应功能,参见 Docker host 网络说明。未启用该功能的 Windows/macOS Docker Desktop 环境使用方式一。

两种方式使用相同的容器名,应二选一;不能在已有 redis-server 容器时重复运行创建命令。

验证服务与密码 ​

先检查容器状态和启动日志:

bash
docker ps --filter name=redis-server
docker logs --tail 50 redis-server

使用交互式密码提示启动 redis-cli,在提示中输入配置的密码:

bash
docker exec -it redis-server redis-cli --askpass

进入客户端后执行:

text
PING

预期响应为 PONG。启用密码后直接执行不带认证的 docker exec -it redis-server redis-cli,再运行 PING,会得到 NOAUTH 错误,不能据此认为 Redis 未启动。redis-cli 认证方式参见 Redis CLI 文档。

还可以验证一次读写:

text
SET demo:install ok EX 60
GET demo:install
TTL demo:install

GET 应返回 ok,TTL 返回剩余秒数。容器内的验证只证明 Redis 进程可用;应用还需要从自己的运行环境验证网络连接。

可选:本机无密码测试 ​

无密码实例使用另一个容器名和宿主机端口,避免与前面的实例冲突,并只绑定回环地址:

bash
docker run -d --name redis-local -p 127.0.0.1:6380:6379 redis redis-server
docker exec -it redis-local redis-cli PING

官方镜像默认启动配置未设置密码,因此这里省略 requirepass;该实例只用于本机测试,不与前面的有密码配置混用。连接地址是 127.0.0.1:6380。测试结束后可以用 docker stop redis-local 停止它。

连接 tio-boot ​

对于运行在宿主机上的应用,方式一或方式二对应配置如下:

properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
redis.timeout=2000
redis.database=0
redis.cacheName=main

独立 Java 入门示例读取 REDIS_PASSWORD 环境变量,Web 配置类读取 redis.password,二者应与服务端密码一致。应用若也在容器中,127.0.0.1 指向应用容器自身,需要按 Docker 网络拓扑使用 Redis 容器的服务名或宿主机地址。

下一步阅读 使用 java-db 整合 Redis,完成连接池初始化与关闭。

MIT Licensed