Redis集群入门

Redis集群

1 为什么要搭建集群

通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。
Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿。
由于内存大小的限制,使用一台 Redis 实例显然无法满足需求,这时就需要使用多台 Redis作为缓存数据库。但是如何保证数据存储的一致性呢,这时就需要搭建redis集群.采用合理的机制,保证用户的正常的访问需求.
采用redis集群,可以保证数据分散存储,同时保证数据存储的一致性.并且在内部实现高可用的机制.实现了服务故障的自动迁移.

2 集群搭建计划

  • 主从划分:
    3台主机 3台从机共6台 端口划分7000-7005

  • 准备集群文件夹cluster

cd /usr/local/src/redis5.5
mkdir cluster
  • 在cluster文件夹中分别创建7000-7005文件夹
cd /usr/local/src/redis5.5/cluster
mkdir 7000 7001 7002 7003 7004 7005
  • 将redis根目录中的redis.conf文件复制到cluster/7000/ 并以原名保存
cd cd /usr/local/src/redis5.5
cp redis.conf cluster/7000/
  • 编辑配置文件Redis.conf
cd /usr/local/src/redis5.5/cluster/7000
[root@localhost 7000]# vim redis.conf 
//1.注释本地绑定IP地址
  69  #bind 127.0.0.1
//2.关闭保护模式
  88  protected-mode no
//3.修改端口号
  92  port 7000
//4.启动后台启动
  136 daemonize yes
//5.修改pid文件
  158 pidfile /usr/local/src/redis5.5/cluster/7000/redid.pid
//6.修改持久化文件路径
  263 dir /usr/local/src/redis5.5/cluster/7000
//7.设定内存优化策略
  597  maxmemory-policy volatile-lru
//8.关闭AOF模式
  699 appendonly no
//9.开启集群配置
  832 cluster-enabled yes
//10.开启集群配置文件
  840  cluster-config-file nodes.conf
//11.修改集群超时时间
  846  cluster-node-timeout 15000
  • 说明:将7000文件夹下的redis.conf文件分别复制到7001-7005中
  • 修改7001到7005的端口号
%s/7000/7001/g
%s/7000/7002/g
%s/7000/7003/g
%s/7000/7004/g
%s/7000/7005/g
  • 创建启动脚本 vim start.sh
#!/bin/sh
redis-server 7000/redis.conf &
redis-server 7001/redis.conf &
redis-server 7002/redis.conf &
redis-server 7003/redis.conf &
redis-server 7004/redis.conf &
redis-server 7005/redis.conf &
  • 编辑关闭的脚本 vim shutdown.sh
#!/bin/sh
redis-cli -p 7000 shutdown &
redis-cli -p 7001 shutdown &
redis-cli -p 7002 shutdown &
redis-cli -p 7003 shutdown &
redis-cli -p 7004 shutdown &
redis-cli -p 7005 shutdown &

开启集群

//启动redis节点
sh start.sh
//检查redis节点启动是否正常
ps -ef | grep redis
//创建redis集群
redis-cli --cluster create --cluster-replicas 1 192.168.126.129:7000 192.168.126.129:7001 192.168.126.129:7002 192.168.126.129:7003 192.168.126.129:7004 192.168.126.129:7005
//yes

关闭集群

[root@localhost cluster]# pwd
/usr/local/src/redis/cluster
[root@localhost cluster]# sh shutdown.sh 
[root@localhost cluster]# rm -f 700?/nodes.conf
[root@localhost cluster]# rm -f 700?/dump.rdb

3 Redis集群高可用测试

  1. 关闭redis主机.检查是否自动实现故障迁移.
  2. 再次启动关闭的主机.检查是否能够实现自动的挂载.
    一般情况下 能够实现主从挂载
    个别情况: 宕机后的节点重启,可能挂载到其他主节点中(7001-7002) 正确的

4 Redis集群原理

在这里插入图片描述
原理说明:
Redis的所有节点都会保存当前redis集群中的全部主从状态信息.并且每个节点都能够相互通信.当一个节点发生宕机现象.则集群中的其他节点通过PING-PONG检测机制检查Redis节点是否宕机.当有半数以上的节点认为宕机.则认为主节点宕机.同时由Redis剩余的主节点进入选举机制.投票选举链接宕机的主节点的从机.实现故障迁移

5 Redis集群宕机条件

特点:集群中如果主机宕机,那么从机可以继续提供服务,
当主机中没有从机时,则向其它主机借用多余的从机.继续提供服务.如果主机宕机时没有从机可用,则集群崩溃.
答案:9个redis节点,节点宕机5-7次时集群才崩溃.
在这里插入图片描述

6 redis入门案例

package com.jt.test;

import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class TestCluster {
	/**
	 * 通过程序操作redis   3主机   读写    3从机 数据备份 
	 */
	@Test
	public void test01() {
		Set<HostAndPort> nodes = new HashSet<HostAndPort>();
		nodes.add(new HostAndPort("192.168.126.129", 7000));
		nodes.add(new HostAndPort("192.168.126.129", 7001));
		nodes.add(new HostAndPort("192.168.126.129", 7002));
		nodes.add(new HostAndPort("192.168.126.129", 7003));
		nodes.add(new HostAndPort("192.168.126.129", 7004));
		nodes.add(new HostAndPort("192.168.126.129", 7005));
		//利用程序操作redis集群
		JedisCluster jedisCluster = new JedisCluster(nodes);
		jedisCluster.set("AAAAA", "redis集群测试");
		System.out.println(jedisCluster.get("AAAAA"));
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值