12.3 Redis

Redis是一个开源(BSD许可)的基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。

12.3 Redis - 图1

Redis使用ANSI C实现,2013年起由Pivotal公司资助。Redis的全称意为REmote DIctionary Server。

通过docker run指令可以直接启动一个redis-container容器:


  1. $ docker run --name redis-container -d redis
  2. 6f7d16f298e9c505f35ae28b61b4015877a5b0b75c60797fa4583429e4a14e24

之后可以通过docker ps指令查看正在运行的redis-container容器的容器ID:


  1. $ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
  3. NAMES
  4. 6f7d16f298e9 redis "docker-entrypoint.sh" 32 seconds ago Up 31 seconds 6379/tcp
  5. redis-container

在此redis容器启动bash,并查看容器的运行时间和内存状况:


  1. $ docker exec -it 6f7d16f298e9 bash
  2. root@6f7d16f298e9:/data# uptime
  3. 12:26:19 up 20 min, 0 users, load average: 0.00, 0.04, 0.10
  4. root@6f7d16f298e9:/data# free
  5. total used free shared buffers cached
  6. Mem: 1020096 699280 320816 126800 50184 527260
  7. -/+ buffers/cache: 121836 898260
  8. Swap: 1181112 0 1181112

同样可以通过env指令查看环境变量的配置:


  1. root@6f7d16f298e9:/data# env
  2. HOSTNAME=6f7d16f298e9
  3. REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.7.tar.gz
  4. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  5. PWD=/data
  6. SHLVL=1
  7. HOME=/root
  8. REDIS_DOWNLOAD_SHA1=e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c
  9. REDIS_VERSION=3.0.7
  10. GOSU_VERSION=1.7
  11. _=/usr/bin/env

也可以通过ps指令查看当前容器运行的进程信息:


  1. root@6f7d16f298e9:/data# ps -ef
  2. UID PID PPID C STIME TTY TIME CMD
  3. redis 1 0 0 12:16 ? 00:00:02 redis-server *:6379
  4. root 30 0 0 12:51 ? 00:00:00 sh
  5. root 39 30 0 12:52 ? 00:00:00 ps -ef

1.连接redis容器

用户可以使用—link参数,连接创建的redis-container容器:


  1. $ docker run -it --link redis-container:db alpine sh
  2. / # ls

进入alpine系统容器后,可以使用ping指令测试redis容器:


  1. / # ping db
  2. PING db (172.17.0.2): 56 data bytes
  3. 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.088 ms
  4. 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.103 ms
  5. --- db ping statistics ---
  6. 2 packets transmitted, 2 packets received, 0% packet loss
  7. round-trip min/avg/max = 0.088/0.095/0.103 ms

还可以使用nc指令(即NetCat)检测redis服务的可用性:


  1. / # nc db 6379
  2. PING
  3. +PONG

官方镜像内也自带了redis客户端,可以使用以下指令直接使用:


  1. $ docker run -it --link redis-container:db --entrypoint redis-cli redis -h db
  2. db:6379> ping
  3. PONG
  4. db:6379> set 1 2
  5. OK
  6. db:6379> get 1
  7. "2"

2.使用自定义配置

可以通过数据卷实现自定义redis配置,如下所示:


  1. $ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name
  2. myredis redis redis-server /usr/local/etc/redis/redis.conf