docker_redis使用

官方 docker 镜像:https://hub.docker.com/_/redis/


部署

  1. pull 镜像

    1
    2
    3
    4
    5
    6
    root@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 redis
  2. run 镜像,挂载数据到宿主中

    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
  3. 测试,使用客户端连上去,这里连的端口是 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

    1. 启动一个后台持续跑的 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
    2. 进入 cli 实例

      1
      2
      $ docker exec -it redis_client bash
      root@bac9f91fdc4b:/data#

      然后跑 redis-cli 程序

      1
      2
      3
      4
      5
      6
      root@bac9f91fdc4b:/data# redis-cli -h redis -p 6379 // redis 是启动实例时 link 到 redis_server 的地址

      redis:6379> KEYS * // 查询所有 key
      1) "mykey"
      2) "jsonkey"
      redis:6379> exit // 退出

参考资料


API 使用

  • 清除所有数据

    1
    2
    redis:6379> FLUSHALL
    OK
  • 查看看所有key

    1
    2
    redis:6379> KEYS *
    1) "user:aaa"

配置文件启动 - 密码设置

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
    5
    docker 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”