Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 的 NoSQL 数据库,并提供多种语言的 API。这里介绍通过docker和docker-compose两种安装redis的方式。
访问 Redis 镜像库地址:https://hub.docker.com/_/redis?tab=tags。
可以通过 Sort by 查看其他版本的 Redis,默认是最新版本 redis:latest。
也可以在下拉列表中找到其他版本:
此外,我们还可以用 docker search redis 命令来查看可用版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source ... 2321 [OK] sameersbn/redis 32 [OK] torusware/speedus-redis Always updated official ... 29 [OK] bitnami/redis Bitnami Redis Docker Image 22 [OK] anapsix/redis 11MB Redis server image ... 6 [OK] webhippie/redis Docker images for redis 4 [OK] clue/redis-benchmark A minimal docker image t... 3 [OK] williamyeh/redis Redis image for Docker 3 [OK] unblibraries/redis Leverages phusion/baseim... 2 [OK] greytip/redis redis 3.0.3 1 [OK] servivum/redis Redis Docker Image 1 [OK] ... |
这里我们拉取官方的最新版本的镜像:
1 |
$ docker pull redis:latest |
使用以下命令来查看是否已安装了 redis:
1 |
$ docker images |
在上图中可以看到我们已经安装了最新版本(latest)的 redis 镜像。
安装完成后,我们可以使用以下命令来运行 redis 容器:
1 |
$ docker run -itd --name redis-test -p 6379:6379 redis |
参数说明:
-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
最后我们可以通过 docker ps 命令查看容器的运行信息:
接着我们通过 redis-cli 连接测试使用 redis 服务。
1 |
$ docker exec -it redis-test /bin/bash |
docker-compose和redis相关的目录和文件存储结构如下:
1 2 3 4 5 6 7 |
myProject ----项目名 ├── compose │ └── docker-compose.yml ----compose配置文件 └── redis ├── data ----redis数据存储目录 ├── logs ----redis日志文件目录(redis.conf中logfile设置相对路径则不需要) └── redis.conf ----redis配置文件 |
使用官方的redis.conf配置文件没搞定(可能是redis版本有差异,个别参数不匹配),这里我们直接将主要参数提取出来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#开启远程可连接 #bind 127.0.0.1 #自定义密码 requirepass 12345678 #指定 Redis 监听端口(默认:6379) port 6379 #客户端闲置指定时长后关闭连接(单位:秒。0:关闭该功能) timeout 0 # 900s内如果至少一次写操作则执行bgsave进行RDB持久化操作 save 900 1 # 在300s内,如果至少有10个key进行了修改,则进行持久化操作 save 300 10 #在60s内,如果至少有10000个key进行了修改,则进行持久化操作 save 60 10000 #是否压缩数据存储(默认:yes。Redis采用LZ 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大) rdbcompression yes #指定本地数据文件名(默认:dump.rdb) dbfilename dump.rdb #指定本地数据文件存放目录 dir /data #指定日志文件位置(如果是相对路径,redis会将日志存放到指定的dir目录下) logfile "redis.log" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
version: "3.8" services: redis: # 镜像及版本 image: redis:6.2.6 # 自定义容器名 container_name: my-redis # docker启动时,自动启动该容器 restart: always # 挂载映射,可以让数据或配置持久化 volumes: # <本地配置文件> : <docker中的配置文件> : <ro:docker容器对该文件只读,默认是rw可读可写> - ../redis/redis.conf:/etc/redis/redis.conf:ro # <本地数据目录> : <docker中的数据目录> - ../redis/data:/data # <本地日志目录> : <docker中的日志目录> # redis不具有自动创建/logs的权限,如果redis.conf中指定的相对位置,则数据目录已经可以映射出日志文件 #- ../redis/logs:/logs # docker执行的启动命令 command: redis-server /etc/redis/redis.conf ports: # <本地端口> : <docker容器端口> - 6378:6379 |
1 2 3 4 5 6 7 8 |
# cd compose # docker-compose up
// 或以后台方式启动 # docker-compose up -d
// 关闭docker-compose # docker-compose down |
直接使用客户端RDM连接redis;也可以先通过命令检查一下:
1 2 3 4 5 |
// 查看容器 # docker ps
// 查看端口 # netstat -ntlp |
1 2 3 4 |
# docker stats my-redis
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 0631151ef5d8 my-redis 0.05% 1.766MiB / 3.7GiB 0.05% 13kB / 55.1kB 0B / 8.19kB 6 |