redis主从+集群

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis主从+集群相关的知识,希望对你有一定的参考价值。

接上篇-redis基础

说明:docker版本:18.03.0-ce
   redis版本: redis-4.0.9

4、redis主从配置

  • 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。

  • 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。

4.1、redis主从同步过程:

1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。

Dockerfile文件
[[email protected] redis]# cat Dockerfile 
FROM centos

# 解压redis到这个目录下
ADD redis-4.0.9.tar.gz /usr/local

# 安装必须要的gcc make工具包,并创建一个软链接用于识别,并安装
RUN yum -y install gcc gcc-c++  make     && ln -sv /usr/local/redis-4.0.9 /usr/local/redis     && cd /usr/local/redis-4.0.9     && make && make install PREFIX=/usr/local/redis     && groupadd -g 3000 redis && useradd -g 3000 -u 3001 redis     && rm -rf /var/lib/yum/*     && chown redis:redis /usr/local/redis* -R

ENV PATH /usr/local/redis/bin:$PATH

VOLUME /data

EXPOSE 6379

# 运行脚本,如果不指定那么密码就是123456
CMD ["redis-server","/data/redis.conf"]

启动: 
Host# docker run -dit -v /redisdata:/data -p 12345:6379 --name r3 --restart=always redis:v2

4.2、主从配置

redis-dockerfile文件

    启动的时候redis的时候会报这个问题,容器与主机使用的是同一个内核,所以直接改本地的文件
   echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

主机:都是127.0.0.1本机上配置  
端口:   主:22220    
            从1:22221   
            从2:22222

1、从节点开始需要文件指定master地址及端口
    dir /data     # 设置同步文件的路径
    slaveof 127.0.0.1 22220   # 设置主redis的地址及端口
    masterauth 123456          # 主服务器的认证密码,如果主redis有,一定需要配置
docker 启动如下

技术分享图片

[[email protected] redis]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                     NAMES
01aeedbc3e3b        redis:v2            "redis-server /data/…"   About a minute ago   Up About a minute   0.0.0.0:22222->6379/tcp   slave2
0d0ea2e0c54b        redis:v2            "redis-server /data/…"   2 minutes ago        Up 2 minutes        0.0.0.0:22221->6379/tcp   slave1
09df0dac0ac2        redis:v2            "redis-server /data/…"   4 minutes ago        Up 4 minutes        0.0.0.0:22220->6379/tcp   master

2、测试
1、查看主
技术分享图片
技术分享图片

2、查看从
技术分享图片

报错如下,是因为不在同一个机器上,需要使用宿主机的IP地址
技术分享图片

3、效果图
技术分享图片

以上是关于redis主从+集群的主要内容,如果未能解决你的问题,请参考以下文章

Redis 主从复制-哨兵-集群 相关部署

Redis集群模式1-主从复制+哨兵机制

玩转Redis的高可用(主从、哨兵、集群)

Redis 主从复制哨兵和集群区别

Jenkins篇:Jenkins 集群搭建(主从)

Redis数据库——(主从复制哨兵模式集群)