目录
- Day 4 Redis高速缓存数据库
- Redis Linux安装 4.0.1版本
- Redis Windows安装
- 基于docker搭建redis集群
- 1. Dockerfile 文件修改
- 2. redis.conf文件在集群中的配置
- 3.创建镜像
- 4.创建节点镜像
- 5.启动6个redis节点容器并添加到集群
- 6.集群槽点,负载均衡
- 6.主从高可用
Day 4 Redis高速缓存数据库
- Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
- Redis官方只有Linux版本的安装包,没有Windows版本的安装包,有人做了redis的windows版本开源分享在github上。
Redis Linux安装 4.0.1版本
- 下载
- wget http://download.redis.io/releases/redis-4.0.1.tar.gz
- 解压
- tar -zxvf redis-4.0.1.tar.gz
- 编译,进入解压好的文件夹后
make - 修改环境变量
Vim /etc/profile
Export PATH=$PATH:/root/docker/redis/redis-4.0.1/src
:wq!
Source /etc/profile - 修改配置文件 /root/docker/redis/redis-5.0.4/redis.conf
- 先设置为守护进程测试远程连接
daemonize yes - 允许被远程连接
将bind 127.0.0.1注释掉:# bind 127.0.0.1 - 设置远程连接时的密码认证
将“# requirepass”改为“requirepass redis ”,此时将密码设置为redis,可以改成其他的 - 杀死进程后重启
ps -ef|grep redis #查进程号
kill -9 进程号 #杀死进程
redis-server redis.conf #重启redis服务
Redis Windows安装
- 下载windows版本安装包
- 解压
- 配置环境变量,将解压好的文件路径放到系统变量path中
路径包含redis-server.exe和redis-cli.exe两个文件 - 启动两个cmd,一个做redis-server,一个做redis-cli,用cli的时候server需开启
redis-server # 在第一个cmd中启动服务端
# 在第二个cmd中启动客户端远程连接虚拟机服务端
redis-cli -h 192.168.87.101 -p 6379 -a redis
基于docker搭建redis集群
1. Dockerfile 文件修改
#指定基础镜像
FROM centos:7
#镜像作者
MAINTAINER mars "1136329229@qq.com"
#定义路径的环境变量
ENV REDIS_HOME /usr/local
#将Dockerfile同级目录下的redis-4.0.1.tar.gz复制到镜像的根目录
ADD redis-4.0.1.tar.gz /
#创建安装目录,根据环境变量信息,实际的创建目录为:/usr/local/redis
RUN mkdir -p $REDIS_HOME/redis
#将Dockerfile同级目录下redis-4.0.1中的redis配置文件拷贝到容器的/usr/local/redis目录中
ADD redis-4.0.1/redis.conf $REDIS_HOME/redis/
#更新镜像的yum
RUN yum -y update
#安装gcc相关编译工具(在镜像中安装)
RUN yum install -y gcc make
#指定工作目录
WORKDIR /redis-4.0.1
#执行编译
RUN make
#移动编译后的redis-server到容器相关的目录
RUN mv /redis-4.0.1/src/redis-server $REDIS_HOME/redis/
#移动到上一级
WORKDIR /
#删除解压文件
RUN rm -rf /redis-4.0.1
#删除gcc的工具
RUN yum remove -y gcc make
#添加数据卷
#/usr/local/redis/logs/redis-server.log
#此目录需要和redis.conf中logfile一致
VOLUME ["/usr/local/redis/logs"]
#暴露6379的端口
EXPOSE 6379
- 作者名字和邮箱(随意设定)
- redis版本相关的路径信息
2. redis.conf文件在集群中的配置
bind 0.0.0.0
requirepass 123 # 远程连接密码
masterauth 123 # 主节点认证的密码
#日志文件的目录
logfile “/usr/local/redis/logs/redis-server.log” # 引号要改为英文
cluster-enabled yes # redis开启集群模式
cluster-config-file nodes-6379.conf # 设置集群的配置文件
cluster-node-timeout 15000 # 设置集群超时时间
3.创建镜像
docker build -t mars/redis . ##注意这里有个.一定不能少
#docker build 表示构建一个自定义镜像
#-t 表示指定镜像的名称 mars是作者名,redis是镜像的名称
# . 表示docker会从当前目录寻找Dockerfile文件并读取后顺序执行来构建镜像
4.创建节点镜像
- 创建redis-node目录并进入
mkdir redis-node
cd redis-node - 使用vim编辑并新建一个Dockerfile文件
vim Dockerfile - 在这个Dockerfile里面添加以下内容 作者可以改
MAINTAINER mars "604784244@qq.com"
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]
- 执行Dockerfile创建节点镜像
docker build -t mars/redis-node . - 查看镜像仓库
docker images - mars/redis是redis基础镜像
mars/redis-node 是redis节点镜像
5.启动6个redis节点容器并添加到集群
- 启动6个redis节点容器
docker run -d --name r1 -p 6001:6379 mars/redis-node
docker run -d --name r2 -p 6002:6379 mars/redis-node
docker run -d --name r3 -p 6003:6379 mars/redis-node
docker run -d --name r4 -p 6004:6379 mars/redis-node
docker run -d --name r5 -p 6005:6379 mars/redis-node
docker run -d --name r6 -p 6006:6379 mars/redis-node
- 查看以下容器和主机的映射信息
docker inspect -f=’{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}’ $(docker ps -aq) - 登录其中6001节点
redis-cli -p 6001 -a 123 - 全部加入集群组
cluster meet 172.17.0.2 6379
cluster meet 172.17.0.3 6379
cluster meet 172.17.0.4 6379
cluster meet 172.17.0.5 6379
cluster meet 172.17.0.6 6379
cluster meet 172.17.0.7 6379
6.集群槽点,负载均衡
通过addSlots.sh文件设置
#!/bin/bash
#将0-5461的槽点配置在r1节点172.17.0.2:6379(宿主机127.0.0.1:7001)的redis上
n=0
for ((i=n;i<=5461;i++))
do
redis-cli -h 127.0.0.1 -p 6001 -a 123 CLUSTER ADDSLOTS $i
done
#将5462-10922的槽点配置在r2节点172.17.0.3:6379(宿主机127.0.0.1:7002)的redis上
n=5462
for ((i=n;i<=10922;i++))
do
redis-cli -h 127.0.0.1 -p 6002 -a 123 CLUSTER ADDSLOTS $i
done
#将10923-16383的槽点配置在r3 172.17.0.4:6379(宿主机127.0.0.1:7003)的redis上
n=10923
for ((i=n;i<=16383;i++))
do
redis-cli -h 127.0.0.1 -p 6003 -a 123 CLUSTER ADDSLOTS $i
done
- 配置槽点的目的是为了让数据根据名字写入到不同的节点中,算法能计算数据名为0~16383之间的一个数
- 执行槽点配置文件,需要等待一定时间配置16383个槽点
./addSlots.sh
6.主从高可用
- 进入一个节点查看集群信息后退出
cluster nodes
- 手动配置主从节点
redis-cli -h 127.0.0.1 -p 6004 -a 123 CLUSTER REPLICATE 集群ID
redis-cli -h 127.0.0.1 -p 6005 -a 123 CLUSTER REPLICATE 集群ID
redis-cli -h 127.0.0.1 -p 6006 -a 123 CLUSTER REPLICATE 集群ID
#设置 6004、6005、6006分别作为6001、6002、6003的从节点