docker_redis使用
官方 docker 镜像:https://hub.docker.com/_/redis/
部署
pull 镜像
1
2
3
4
5
6root@ubuntu:~# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store th... 3997 [OK]
sameersbn/redis 55 [OK]
root@ubuntu:~# docker pull redisrun 镜像,挂载数据到宿主中
1
2
3
4
5
6
7
8
9
10
11
12$ mkdir -p /opt/redis/data
$ docker run -d \
--restart=always \
--name redis_server \
-p 7379:6379 \
-v /opt/redis/data:/data \
redis \
redis-server --appendonly yes
# window 版
$ docker run -d --restart=always --name redis_server -p 7379:6379 -v /root/docker_data/redis/data:/data redis:5.0.5 --appendonly yes自定义 config 命令,通过挂载方式,例如:
1
docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis:5.0.5 /usr/local/etc/redis/redis.conf
测试,使用客户端连上去,这里连的端口是 redis_server 容器内的 6379 端口
1
2
3
4
5
6$ docker run -it \
--name redis_client \
--link redis_server:redis \
--rm=true \
redis \
redis-cli -h redis -p 6379- 这个启动实例命令每次退出都会删除 docker 实例 (
--rm=true
)
可以这样实现一个后台跑的 cli, 不过每次进去实例后需要自己连 redis-srv
启动一个后台持续跑的 docker 实例, 使用 srv 同一个镜像
redis:5.0.5
即可1
2$ docker run -itd --restart=always --name redis_client --link redis_server:redis redis:5.0.5 bash
bac9f91fdc4bc975ab3048074ac1279f66b786701d7f0367662af6ff3a2d9153进入 cli 实例
1
2$ docker exec -it redis_client bash
root@bac9f91fdc4b:/data#然后跑
redis-cli
程序1
2
3
4
5
6root@bac9f91fdc4b:/data# redis-cli -h redis -p 6379 // redis 是启动实例时 link 到 redis_server 的地址
redis:6379> KEYS * // 查询所有 key
1) "mykey"
2) "jsonkey"
redis:6379> exit // 退出
- 这个启动实例命令每次退出都会删除 docker 实例 (
参考资料
API 使用
清除所有数据
1
2redis:6379> FLUSHALL
OK查看看所有key
1
2redis:6379> KEYS *
1) "user:aaa"
配置文件启动 - 密码设置
- docker redis自定义配置文件启动 - https://www.jianshu.com/p/ff599cddc869
- 官方配置文件 - https://redis.io/topics/config, 从这里下载对应版的配置文件拿来修改
docker 启动 redis镜像里是没有配置文件的, 去官方下载修改, 需要修改的几个参数
一般来说我们需要修改的内容仅有下面几个
1
2
3
4
5
6
7
8
9# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
deamonize no
# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接
# bind 127.0.0.1
# 因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly no
# 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过
# auth <password>命令提供密码,默认关闭,当前密码为123456
requirepass 123456启动指定配置文件
1
2
3
4
5docker run -d -p 6379:6379 --name redis3
-v /root/redis/redis.conf:/etc/redis/redis.conf
-v root/redis/data:/data
hub.c.163.com/library/redis:latest
redis-server /etc/redis/redis.conf --appendonly yes将本地配置文件映射到镜像中,这样更改本地文件就可以直接修改镜像中的配置了,更改之后使用docker restart+容器ID 重启服务。
/docker/redis/redis.conf
是宿主机子上的文件,/etc/redis/redis.conf
是容器里面的文件
启动时最后也可以加配置参数“–appendonly yes”