redis 学习笔记(3)-master/slave(主/从模式)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到slave上。 环境: master node: 10.

类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到slave上。

环境:

master node: 10.6.144.155:7030

slave node: 10.6.144.156:7031

 

一、配置

仅需要在slave node上修改配置:

找到slaveof这行,参考下面的修改(填上master node的Ip和端口就完事了)

slaveof 10.6.144.155 7030

另外注意下 slave-read-only yes 这行,这表示slave只读不写,也是推荐设置

 

二、验证

启动master/slave这二台机器上的redis,在master上加一个缓存项

然后在slave上取出该缓存项

取到了,说明master上的cache自动复制到slave节点了

 

三、redisson客户端使用

 1     @Test
 2     public void testRedisson() {
 3         Config config = new Config();
 4 
 5         config.useMasterSlaveConnection().setMasterAddress("10.6.144.155:7030")
 6                 .addSlaveAddress("10.6.144.156:7031");
 7 
 8         Redisson redisson = Redisson.create(config);
 9 
10         String key = "test";
11         
12         RBucket<String> myObj = redisson.getBucket(key);
13         if (myObj!=null){
14             myObj.delete();
15         }
16         
17         myObj.set("hello World");
18         
19         System.out.println(myObj.get());//断点停在这里,然后down掉master,不影响读取
20         
21         myObj.set("new Value");//恢复master,down掉slave,不影响写入
22         
23         System.out.println(myObj.get());//再恢复slave,down掉master,可正常读取
24         
25         myObj.set("can not write to master");//master已down掉,无法写入
26         
27         System.out.println(myObj.get());//恢复master,down掉slave,无法读取
28         
29         
30         redisson.shutdown();
31         
32         
33     }
View Code

注:经实际测试,redisson客户端在set写操作时,连接的是master node,get读操作时连接的是slave,而且遇到操作失败,会同步阻塞后面的处理(一直等待,直到超时)

即:set操作时,至少要有一台可连接的master,get操作时,至少要有一台可连接的slave

 

四、Jedis客户端使用

 1     @Test
 2     public void testJedis() throws InterruptedException {
 3         
 4         Jedis jedisMaster = new Jedis("10.6.144.155", 7030);
 5         
 6         String key = "a";
 7         
 8         String a= jedisMaster.get(key);
 9         if (a!=null){
10             jedisMaster.del(key);
11         }
12         jedisMaster.set(key, "hi!");//向master写入
13         jedisMaster.close();
14         
15 
16         Jedis jedisSlave = new Jedis("10.6.144.156", 7031);// 连接slave
17         
18         jedisSlave.slaveof("10.6.144.155", 7030);// 指定master        
19 
20         System.out.println(jedisSlave.get(key));
21         
22         jedisSlave.slaveofNoOne();//master如果down挂,可以用代码将slave提升为master(即:可写)
23 
24         jedisSlave.set(key, "new");
25 
26         System.out.println(jedisSlave.get(key));
27 
28         jedisSlave.close();
29 
30     }
View Code

 

后记:个人感觉master-slave模式作用有限,因为从二种client的测试结果看,在没有其它监控机制的前提下,无论是master或slave挂掉,都需要手动调整配置或修改代码,才能保证读/写继续正常工作,理想情况是master挂掉,最好slave中能自动(无需人工干预)选出一台充当master继续服务。redis 的cluster功能,目前尚处于beta阶段,估计不久的将来,等cluster功能正式发布后,可以通过custer功能搭建redis集群。

目录
相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
331 5
|
7月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
276 5
|
2月前
|
存储 运维 NoSQL
Redis集群模式
Redis集群是一种分布式存储方案,旨在解决数据存储容量不足的问题。它通过将数据分片存储在多个节点上,实现数据的横向扩展。常见的分片算法包括哈希求余、一致性哈希和哈希槽分区。其中,Redis采用哈希槽分区算法,将数据均匀分配到16384个槽位中,每个分片负责一部分槽位。当节点故障时,集群通过故障检测和主从切换机制,确保服务的高可用性。集群还支持自动的数据迁移和负载均衡,保障系统稳定运行。
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
1734 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
1380 3
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
349 4
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
195 3
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
309 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
SQL 分布式计算 NoSQL
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
138 2
下一篇
oss云网关配置