Redis集群搭建及java连接redis

Redis集群分为三种:

1、主从关系模式2、Sentinel哨兵关系模式3、Cluster去中心化模式

1、主从关系模式

1.1、什么是主从模式?

(1)主节点只有一个,从节点可以有多个(即一个主节点可以有多个对应的从节点)。

(2)主节点值负责写入操作,从节点负责读取操作(从节点无法使用写入操作)。

(3)主节点宕机后,从节点会等待主节点修复归来,整个集群无法使用。而一个从节点宕机,不会影响到其他节点的运行。

1.2、主从模式的搭建

(1)redis安装目录下创建master-slave目录,将redis.conf文件复制三份进去(假设有一个主节点,两个从节点)

创建master-slave目录用于存放主从的redis文件
mkdir master-slave复制三个redis.conf到创建的文件中
cp redis.conf /home/redis/master-slave/redis7001.conf
cp redis.conf /home/redis/master-slave/redis7002.conf
cp redis.conf /home/redis/master-slave/redis7003cd.conf

(2)修改master-slave中的redis文件:

①编辑redis7001.conf文件。

vi redis7001.conf

②找到端口号的位置并修改为7001(自定义端口号)

③修改持久化文件的名称(RDB文件)

④关闭AOF的持久化:

(3)启动redis时指定上面的三个配置文件

redis-server redis7001.confredis-server redis7002.confredis-server redis7003.conf

(4)分别登录redis7001、7002、7003账号(注意分界面操作)

redis-cli -h ip(自己的ip) -p7001redis-cli -h ip(自己的ip) -p7002redis-cli -h ip(自己的ip) -p7003

(5)设置7001为主节点

查看当前节点主从信息
info replication从节点中设置7001为主节点(两个从节点都要配置)
slaveof ip(主节点所在的ip) 7001主从节点中分别使用读写操作,发现:1、主节点只负责写,但是可以进行读操作。2、从节点中可以进行读操作,但是无法使用写操作。3、新增一个从节点,会发现数据与其余节点数据一致。将主节点关闭发现从节点无法进行读取操作,查看主从信息显示主节点处于down状态。将主节点开启,关闭其中一个从节点,发现主从节点均不受影响。因此:1、主节点宕机,集群会处于无法操作状态,从节点不能进行操作。2、从节点宕机,其余从节点及主节点均不受影响

2、Sentinel哨兵关系模式:

哨兵可以有多个,主节点每隔一段时间会向哨兵发送“状态信息”,一旦超过规定时间未发送信息,哨兵会认为主节点宕机,随后在从节点中选取一个节点作为主节点,主节点再次上线后会成为新的主节点的从节点。

2.1哨兵模式的搭建

1、使用主从模式的redis(不再重新创建主从节点)。2、修改sentinel文件中的配置
vi sentinel# 192.168.31.166表示redis主节点的ip (本机的可以为127.0.0.1)
# 7001 表示主节点的端口号
# 1 表示有多少个哨兵选取redis从节点后,该从节点可以当选为主节点。
sentinel monitor mymaster 192.168.31.166 7001 13、启动哨兵
redis-sentinel sentinel.conf4、测试
将7001关闭,,哨兵选取了7002为主节点。哨兵解决了主从模式中主节点宕机,从节点等待造成的集群停止运行的缺点。但是哨兵依然没有解决单节点的问题,且持久化文件始终在一个服务器上。

3、Cluster去中心化集群

解决了单节点的问题。使用了分槽的概念。去中心化可以说是sentinel哨兵模式和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。

3.1、创建集群并配置(必须保证aof开启,并保证redis中没有数据)

1、创建three-master-three-slave文件夹
mkdir three-master-three-slave2、将redis.conf文件复制到three-master-three-slave中
cp redis.conf /home/redis/three-master-three-slave/redis8001.conf
cp redis.conf /home/redis/three-master-three-slave/redis8002.conf
cp redis.conf /home/redis/three-master-three-slave/redis8003.conf
cp redis.conf /home/redis/three-master-three-slave/redis8004.conf
cp redis.conf /home/redis/three-master-three-slave/redis8005.conf
cp redis.conf /home/redis/three-master-three-slave/redis8006.conf3、分别修改redis8001.conf。。。。的配置
#修改端口号为8001:
port 8001#修改为其他用户可以连接:
bind * -::*#修改为后台运行:
daemonize yes#修改为AOF,改为开启状态:
appendonly yes#开启集群
cluster-enabled yes             833行# 集群的配置文件,该文件自动生成
cluster-config-file nodes-8001.conf  841行# 集群的超时时间
cluster-node-timeout 5000         847行

3.2、启动所有redis并分配槽

(1)启动所有redisredis-server redis8001.confredis-server redis8002.confredis-server redis8003.confredis-server redis8004.confredis-server redis8005.confredis-server redis8006.conf(2)为主节点分配槽以及随机分配从节点,cluster-replica:表示每个主节点跟随的从节点的个数
redis-cli --cluster create --cluster-replicas 1 192.168.31.166:8001 192.168.31.166:8002 192.168.31.166:8003 192.168.31.166:8004  192.168.31.166:8005  192.168.31.166:8006(3)使用客户端访问
redis-cli -c -h 192.168.31.166 -p 8001

4、java连接redis(maven项目)—jedis

(1)创建maven项目

(2)引入Jedis依赖

  <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.3.0</version></dependency></dependencies>

(3)使用jedis连接redis

public class TestJedis {public static void main(String[] args) {Jedis jedis=new Jedis("192.168.31.166",6379);//必须运行远程连接 必须防火墙放行该端口号//关于字符串jedis.set("k1","v1");jedis.set("k8","18");jedis.mset("k2","v2","k3","v3","k4","v4");jedis.setnx("k1","12");jedis.decr("k8");//操作keySet<String> keys = jedis.keys("*");System.out.println("所有的key:"+keys);jedis.del("k1");jedis.expire("k2",60);jedis.ttl("k2");}
}

(4)使用jedis连接池

public class TestPoolJedis {public static void main(String[] args) {//连接池的配置JedisPoolConfig config=new JedisPoolConfig();//设置连接池的最大连接数config.setMaxTotal(100);//设置最大空闲的个数config.setMaxIdle(10);//在从连接池这种获取连接对象前是否测试该对象可以。config.setTestOnBorrow(true);//创建连接池对象JedisPool jedisPool=new JedisPool(config,"192.168.31.166",6379);//获取jedis对象Jedis jedis = jedisPool.getResource();System.out.println(jedis.get("k3"));//释放资源jedis.close();}
}

);

    //创建连接池对象JedisPool jedisPool=new JedisPool(config,"192.168.31.166",6379);//获取jedis对象Jedis jedis = jedisPool.getResource();System.out.println(jedis.get("k3"));//释放资源jedis.close();}

}


Redis集群搭建及java连接redis相关推荐

  1. redis集群搭建(非常详细,适合新手)

    redis集群搭建 在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程 下载redis压缩包,然后解压压缩文件: 进入到解压缩后的redis文件目录(此时可以看到Makefil ...

  2. Redis集群搭建(非常详细)

    https://blog.csdn.net/qq_42815754/article/details/82912130 redis集群搭建 在开始redis集群搭建之前,我们先简单回顾一下redis单机 ...

  3. 分布式缓存 Redis 集群搭建,这里一次性帮你搞定!

    作者:Esofar cnblogs.com/esofar/p/10486621.html Redis 集群简介 Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推 ...

  4. redis没有bin目录_分布式缓存 Redis 集群搭建,这里一次性帮你搞定!

    作者:Esofar cnblogs.com/esofar/p/10486621.html Redis 集群简介 Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推 ...

  5. 分布式缓存 Redis 集群搭建

    点击上方的终端研发部,右上角选择"设为星标" Redis 集群简介 Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案. ...

  6. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  7. 一次搞定:分布式缓存 Redis 集群搭建!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Esofar 来源 | cnblogs.com ...

  8. redis 集群搭建_一文轻松搞懂redis集群原理及搭建与使用

    转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...

  9. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

最新文章

  1. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc
  2. 实现一个spring webservice服务端二:创建一个可以访问的webservice
  3. python 后台执行
  4. IDA*-洛谷P1379 八数码难题
  5. android listview的一些设置
  6. 学习OpenCV,看这些!
  7. Python入门:局部变量与全局变量2
  8. python的标准类型内建函数_Python内建函数
  9. 啄木鸟下载器(全能版) v2021.01.05
  10. ffmpeg 2.6.3在Windows系统MinGW的编译
  11. Web容器默认的servlet
  12. how to install tensorflow-gpu==1.12.0
  13. java 读取office文件,java读取office文件
  14. phpexcel读取输出操作
  15. linux进程间命名管道,Linux进程间通信
  16. 数学建模第六章 微分方程建模
  17. 解决联想笔记本电源选项 电源管理无效
  18. 马克思对“货币之谜”的 历史唯物主义解答
  19. 阿里云centos部署jsonserver
  20. IOS 调用微信扫码二维码

热门文章

  1. 有用友T6账套备份,如何判断版本?
  2. Vue2+VueRouter2+webpack 构建项目实战(二)目录以及文件结构
  3. linux学习笔记4.0
  4. 10大电子商务创新案例集合
  5. 坦克世界登录服务器未响应,为你操作win7系统坦克世界登录连接不上服务器的方案_...
  6. 微信小程序云开发——实现 线上注册,登录的逻辑,并保存账号到云数据库( 二 ):注册
  7. 数学建模学习笔记(二十二)灰色预测(下下)GM(2,1)
  8. 58、【网络工程师精华篇】50种网络故障及解决方法大集合
  9. 5自由度并联机械臂实现搬运功能
  10. JavaScript交互式网页设计 • 【第2章 JavaScript函数与事件】