通过 docker-compose 快速部署 Redis 保姆级教程

一、概述

Redis(全称:Remote Dictionary Server,即远程字典服务器)是一个开源的高性能键值数据库和缓存体系。Redis 的数据结构支撑字符串、哈希表、列表、调集和有序调集等类型。同时,Redis 还供给了丰厚的操作指令,例如 GET/SET、INCR/DECR、HGET/HSET、LPUSH/RPUSH、SADD/SMEMBERS、ZADD/ZRANGE 等。除此之外,Redis 还支撑业务、过期时刻、发布/订阅等特性,能够便利地完成各种高效的数据存储和读取方案。

通过 docker-compose 快速部署 Redis 保姆级教程

想了解更多redis知识点能够参考我这篇文章:Redis原理介绍与环境布置(主从形式、哨兵形式、集群形式)

二、前期预备

1)布置 docker

# 装置yum-config-manager装备东西
yum -y install yum-utils
# 建议运用阿里云yum源:(引荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 装置docker-ce版本
yum install -y docker-ce
# 发动并开机发动
systemctl enable --now docker
docker --version

2)布置 docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

三、创立网络

# 创立,注意不能运用hadoop_network,要不然发动hs2服务的时候会有问题!!!
docker network create hadoop-network
# 检查
docker network ls

四、Redis 编列布置

1)下载 Redis

下载地址:download.redis.io/releases/

wget http://download.redis.io/releases/redis-7.0.3.tar.gz

2)装备

  • config/master/redis.conf
bind 0.0.0.0
daemonize yes
logfile "/usr/local/redis/redis.log"
dir /opt/apache/redis/data
masterauth 123456
requirepass 123456
appendonly yes

参数解说:

bind            # 监听ip,多个ip用空格分隔,监听一切的IP地址
daemonize yes   # 答应后台发动
logfile         # 日志途径
dir             # 数据库备份文件寄存目录
masterauth      # slave衔接master暗码,master可省掉
requirepass     # 设置master衔接暗码,slave可省掉
appendonly       # 在/opt/apache/redis/data目录生成appendonly.aof文件,将每一次写操作恳求都追加到appendonly.aof 文件中
  • config/slave/redis.conf
bind 0.0.0.0
daemonize yes
logfile "/usr/local/redis/redis.log"
dir /opt/apache/redis/data
replicaof redis-master 6379
masterauth 123456
requirepass 123456
appendonly yes

参数解说:

bind            # 监听ip,多个ip用空格分隔,监听一切的IP地址
daemonize yes   # 答应后台发动
logfile         # 日志途径
dir             # 数据库备份文件寄存目录
replicaof       #  replicaof用于跟随某个节点的redis,被跟随的节点为主节点,跟随的为从节点。便是设置master节点
masterauth      # slave衔接master暗码,master可省掉
requirepass     # 设置master衔接暗码,slave可省掉
appendonly       # 在/opt/apache/redis/data目录生成appendonly.aof文件,将每一次写操作恳求都追加到appendonly.aof 文件中

3)发动脚本 bootstrap.sh

#!/usr/bin/env sh
wait_for() {
    echo Waiting for $1 to listen on $2...
    sleep 1
    while ! nc -z $1 $2; do echo waiting...; sleep 1s; done
}
node_type=$1
if [ $node_type = "slave" ];then
        wait_for redis-master 6379
fi
/usr/local/bin/redis-server /usr/local/redis/redis.conf
tail -f /usr/local/redis/redis.log

4)构建镜像 Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos:7.7.1908
RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
RUN export LANG=zh_CN.UTF-8
RUN yum -y install install net-tools telnet wget nc less gcc gcc++ make
RUN mkdir /opt/apache/
# 编译装置 redis
ENV REDIS_VERSION 7.0.3
ADD redis-${REDIS_VERSION}.tar.gz /opt/apache/
ENV REDIS_HOME /opt/apache/redis
RUN ln -s /opt/apache/redis-${REDIS_VERSION} $REDIS_HOME
# 开端编译
RUN cd $REDIS_HOME && make && make install
# 创立数据目录
RUN mkdir ${REDIS_HOME}/data
# copy bootstrap.sh
COPY bootstrap.sh /opt/apache/
RUN chmod +x /opt/apache/bootstrap.sh
WORKDIR $KAFKA_HOME

开端构建镜像

# 需求检查构建镜像详细过程则需求加上 --progress=plain 选项
docker build -t registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/redis:7.0.3 . --no-cache --progress=plain
# 为了便利小伙伴下载即可运用,我这儿将镜像文件推送到阿里云的镜像库房
docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/redis:7.0.3
### 参数解说
# -t:指定镜像名称
# . :当时目录Dockerfile
# -f:指定Dockerfile途径
#  --no-cache:不缓存

5)编列 docker-compose.yaml

version: '3'
services:
  redis-master:
    image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/redis:7.0.3
    container_name: redis-master
    hostname: redis-master
    restart: always
    volumes:
      - ./config/master/redis.conf:/usr/local/redis/redis.conf
    ports:
      - "36379:6379"
    #command: ["sh","-c","/opt/apache/bootstrap.sh master"]
    command: ["sh","-c","/usr/local/bin/redis-server /usr/local/redis/redis.conf ; tail -f /usr/local/redis/redis.log"]
    networks:
      - hadoop-network
    healthcheck:
      test: ["CMD-SHELL", "netstat -tnlp|grep 6379 || exit 1"]
      interval: 10s
      timeout: 20s
      retries: 3
  redis-slave:
    image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/redis:7.0.3
    restart: always
    deploy:
      replicas: 2
    volumes:
      - ./config/slave/redis.conf:/usr/local/redis/redis.conf
    ports:
      - "6379"
    command: ["sh","-c","/opt/apache/bootstrap.sh slave"]
    networks:
      - hadoop-network
    healthcheck:
      test: ["CMD-SHELL", "netstat -tnlp|grep 6379  || exit 1"]
      interval: 10s
      timeout: 10s
      retries: 3
# 衔接外部网络
networks:
  hadoop-network:
    external: true

6)开端布置

docker-compose -f docker-compose.yaml up -d
# 检查
docker-compose -f docker-compose.yaml ps

通过 docker-compose 快速部署 Redis 保姆级教程

五、简略测试验证

docker exec -it redis-master bash
# 登录
redis-cli -h redis-master
# 输入暗码,装备文件里装备的暗码
redis-master:6379> auth 123456
# 检查集群信息
redis-master:6379> info replication
# 非交互式,但是不建议,因为暗码直接在history能够查到,安全问题
redis-cli -h redis-master -a 123456 info replication

通过 docker-compose 快速部署 Redis 保姆级教程

【温馨提示】master节点可读可写,slave是只读的。

六、常用的 redis 客户端指令

下面是 Redis 常用的客户端指令:

  • SET key value: 设置字符串类型的键值对。
  • GET key: 获取指定 key 的值。
  • DEL key: 删去指定的 key 。
  • INCR key: 将指定 key 的值加 1。
  • DECR key: 将指定 key 的值减 1。
  • EXISTS key: 判断 key 是否存在。
  • EXPIRE key seconds: 设置 key 的过期时刻,以秒为单位。
  • TTL key: 获取 key 的剩下生存时刻,以秒为单位。
  • KEYS pattern: 查找一切契合给定形式的 key。
  • FLUSHALL: 删去一切 key。

还有一些高档指令,能够用于处理 Redis 的杂乱数据结构和完成业务等功能:

  • LPUSH key value: 将一个元素添加到列表的头部。
  • RPUSH key value: 将一个元素添加到列表的尾部。
  • LPOP key: 弹出并回来列表的头部元素。
  • RPOP key: 弹出并回来列表的尾部元素。
  • SADD key members: 将一个或多个元素添加到调集中。
  • SMEMBERS key: 回来调集中的一切成员。
  • ZADD key score member: 将元素和分值添加到有序调集中。
  • ZREVRANGE key start stop: 反向获取有序调集中指定分值范围内的一切成员。
  • MULTI: 开端业务。
  • EXEC: 执行业务中一切指令。
  • WATCH key: 监督指定 key 。如果在执行业务期间该 key 发生了改变,业务将被撤销。

以上是 Redis 中的常用客户端指令,掌握这些指令的运用能够更好地利用 Redis 进行数据存储和处理。


经过 docker-compose 快速布置 Redis 教程就先到这儿了,有任何疑问欢迎给我留言或私信,可关注我公众号【大数据与云原生技能分享】加群交流或私信交流~

通过 docker-compose 快速部署 Redis 保姆级教程