进度记录【Day4】Redis高速缓存数据库

Day 4 Redis高速缓存数据库

  1. Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
  2. Redis官方只有Linux版本的安装包,没有Windows版本的安装包,有人做了redis的windows版本开源分享在github上。

Redis Linux安装 4.0.1版本

  1. 下载
  • wget http://download.redis.io/releases/redis-4.0.1.tar.gz
  1. 解压
  • tar -zxvf redis-4.0.1.tar.gz
  1. 编译,进入解压好的文件夹后
    make
  2. 修改环境变量
    Vim /etc/profile
    Export PATH=$PATH:/root/docker/redis/redis-4.0.1/src
    :wq!
    Source /etc/profile
  3. 修改配置文件 /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安装

  1. 下载windows版本安装包
  2. 解压
  3. 配置环境变量,将解压好的文件路径放到系统变量path中
    路径包含redis-server.exe和redis-cli.exe两个文件
  4. 启动两个cmd,一个做redis-server,一个做redis-cli,用cli的时候server需开启
redis-server # 在第一个cmd中启动服务端
# 在第二个cmd中启动客户端远程连接虚拟机服务端
redis-cli -h 192.168.87.101 -p 6379 -a redis 

redis远程连接测试成功

基于docker搭建redis集群

1. Dockerfile 文件修改

#指定基础镜像
FROM centos:7

#镜像作者
MAINTAINER  mars "[email protected]"

#定义路径的环境变量
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 "[email protected]"
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的从节点
发布了8 篇原创文章 · 获赞 1 · 访问量 225

猜你喜欢

转载自blog.csdn.net/qq_41103187/article/details/105345732