频道栏目
首页 > 网络 > 云计算 > 正文

Redis主从与集群配置教程

2017-11-04 10:48:17         来源:长胖的wo一定特美的博客  
收藏   我要投稿

Redis持久化

rdb方式:

RDB方式的持久化是通过快照完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘

RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

   save  900  1
   save  300  10
   save  60   10000

     save开头的一行就是持久化配置,可以配置多个条件(每行配置一个条件),每个条件之间是"或"的关系,"save 900 1"表示15分钟内至少1个键被更改则进行快照
     Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存;根据数据量大小与结构和服务器性能不同,这个时间也不同;通常将记录一千万个字符串类型键,大小为1GB的快照文件载入到内存中需要花费20~30秒中

问题总结: 通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据;如果数据很重要以至于无法承受任何损失,则……

aof方式:

     appendonly  yes    [将no改为yes,这样aof方式的持久化就开启]

redis主从复制:

为了高可用,引入redis的主从复制的概念:

第一步:复制一个redis

第二步:在redis.conf文件中的端口改为6380

第三步:打开slaveof注释并将主机的ip和端口配置 slaveof minimaster 6379

从机是只读的

Redis集群

 1.集群通信是通过"ping-pong"机制进行通信
 2.客户端不需要将所有的节点都连接上,只需要连接其中一个节点即可
 3.集群中存储数据是存储到一个个的槽中,集群中槽的个数是固定的:16384;槽的编号是[0-16383];在集群中存储数据时,会根据key进行计算,计算出一个结果,然后将这个结果和16384取余,余数就是这个key将要存储的槽的编号
 4.槽的编号之间不能断开
 5.槽的计算会将数据保存的很平均,不会产生一个槽满一个槽空的情况

redis-cluster投票:容错

什么时候整个集群不可用(cluster_state:fail)??

    1.如果集群任意master挂掉,且当前master没有slave,集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态
    2.如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态

集群搭建:

由于集群的脚本是ruby语言编写的,所以需要准备ruby的环境

安装ruby:

yum install -y ruby

yum install -y rubygems

安装ruby和redis的接口程序

拷贝redis-3.0.0.gem至 /usr/local下

执行:

gem install /usr/local/redis-3.0.0.gem

集群环境最少要三台机器(master),每个主机都需要配置一个从机,即总共需要6台机器

6台机器的端口号如下:

7001 7002 7003 7004 7005 7006

在 /usr/local 下新建rediscluster

mkdir redisicluster

cp /usr/local/redis /usr/local/rediscluster

cd /usr/local/rediscluster

mv redis redis01

cp ./redis01 ./redis02 …….

这里写图片描述

分别修改端口:(redis.conf)

port: 7001 / 7002 / 7003 / 7004 / 7005 / 7006

cluster-enable => yes

cp /usr/local/redis-3.0.0.gem/src/redis-trib.rb /usr/local/rediscluster

这里写图片描述

cd /usr/local/rediscluster

vi start-all.sh [启动脚本]

#!/bin/bash

cd redis01/bin

./redis-server redis.conf

cd ../..

cd redis02/bin

./redis-server redis.conf

cd ../..

cd redis03/bin

./redis-server redis.conf

cd ../..

cd redis04/bin

./redis-server redis.conf

cd ../..

cd redis05/bin

./redis-server redis.conf

cd ../..

cd redis06/bin

./redis-server redis.conf

cd ../..

sh start-all.sh

[权限不够] chown 777 start-all.sh

启动成功:

执行命令:      
 ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

启动前检查redis0X里面是否有dump.rdb和nodes.conf

若有则会执行脚本后,出现以下错误:

这里写图片描述

解决方案

这里写图片描述

成功:

这里写图片描述

上一篇:yum是什么?yum有什么作用?如何配置本地yum?
下一篇:常见的排序算法的稳定性分析和探讨
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站