使用 Docker 安装 Redis
本页介绍单机开发环境的 Redis 安装。先确认 Docker 已安装且服务正在运行,再选择下面一种方式启动容器。设置 --requirepass "123456" 表示启用密码;它与“无密码”配置不同。
拉取镜像
docker pull redis
未指定标签时使用 redis:latest。用于固定环境时,应将下文所有 redis 镜像名统一替换为项目验证过的版本标签或摘要,避免重建时版本无意变化。容器启动与数据卷用法参见 Redis 官方 Docker 安装说明。
方式一:端口映射并设置密码
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 网络:
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 容器时重复运行创建命令。
验证服务与密码
先检查容器状态和启动日志:
docker ps --filter name=redis-server
docker logs --tail 50 redis-server
使用交互式密码提示启动 redis-cli,在提示中输入配置的密码:
docker exec -it redis-server redis-cli --askpass
进入客户端后执行:
PING
预期响应为 PONG。启用密码后直接执行不带认证的 docker exec -it redis-server redis-cli,再运行 PING,会得到 NOAUTH 错误,不能据此认为 Redis 未启动。redis-cli 认证方式参见 Redis CLI 文档。
还可以验证一次读写:
SET demo:install ok EX 60
GET demo:install
TTL demo:install
GET 应返回 ok,TTL 返回剩余秒数。容器内的验证只证明 Redis 进程可用;应用还需要从自己的运行环境验证网络连接。
可选:本机无密码测试
无密码实例使用另一个容器名和宿主机端口,避免与前面的实例冲突,并只绑定回环地址:
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
对于运行在宿主机上的应用,方式一或方式二对应配置如下:
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,完成连接池初始化与关闭。本文是安装操作说明,本次文档维护未实际创建或修改 Docker 容器。
