让我们探索Redis Sentinel,看看如何在Java上运行它,一起来看看,最近get了很多新知识,分享给大家参考学习。需要详细的java架构思维导图路线也可以评论获取!

什么是Redis哨兵

在优锐课的java分享中讨论了,可用性是任何企业数据库中最重要的质量之一。用户必须保证他们可以访问所需的信息和见解,从而在工作中表现出色。

但是,确保数据库在需要时可用是一件容易的事,而做起来却容易。术语“高可用性”是指可以连续运行而不会出现故障的系统,该系统的时间长度比平均时间长。

Redis Sentinel是Redis的高可用性解决方案,Redis是一种开源的内存中数据结构存储,可用作非关系键值数据库。 Redis Sentinel的目标是通过三种不同的功能来管理Redis实例:监视你的Redis部署,在出现问题时发送通知,以及通过创建新的主节点自动处理故障转移过程。

作为分布式系统,Redis Sentinel旨在与其他Sentinel进程一起运行。这减少了在检测到主节点发生故障时出现误报的可能性,并且还为系统接种了任何单个进程的故障。

Redis Sentinel的创建者建议你至少有三个Sentinel实例,以便进行可靠的Sentinel部署。这些实例应分布在可能彼此独立故障的计算机之间,例如位于不同地理区域的计算机

如何运行Redis 哨兵

运行Redis Sentinel将需要以下两个可执行文件之一:redis-sentinel或redis-server。

使用redis-sentinel可执行文件,你可以使用以下命令运行Redis Sentinel:

 redis-sentinel /path/to/sentinel.conf

其中“ /path/to/sentinel.conf”是Sentinel配置文件的路径。

借助redis-server可执行文件,你可以使用以下命令运行Redis Sentinel:

 redis-server /path/to/sentinel.conf --sentinel

请注意,在两种情况下,都必须提供指向Sentinel配置文件的链接。 运行Redis Sentinel时需要使用配置文件,以便在系统重新启动时保存系统的当前状态。

Redis Sentinel配置文件示例如下所示:

 sentinel monitor mymaster 127.0.0.1 6379 2

 sentinel down-after-milliseconds mymaster 60000

 sentinel failover-timeout mymaster 180000

 sentinel parallel-syncs mymaster 1

 sentinel monitor resque 192.168.1.3 6380 4

 sentinel down-after-milliseconds resque 10000

 sentinel failover-timeout resque 180000

 sentinel parallel-syncs resque 5

在此示例中,行``Sentinel Monitor <主组名称> <ip> <端口> <仲裁>''在给定的IP地址和端口号上定义了一个名为master-group-name的Sentinel主节点。 法定参数是必须就主节点不可访问这一事实达成共识的Sentinel进程数。

其他行定义以下设置:

“毫秒后下降”:定义将主节点视为不可达之后经过的毫秒数。

“ Sentinel故障转移超时”:定义Sentinel进程将尝试投票主节点的故障转移的时间。

“ sentinel parallel-syncs”:定义可以在故障转移后同时重新配置为使用同一主节点的从节点的数量。

在Java上连接到Redis Sentinel

对于Java程序员而言,坏消息是Redis Sentinel与Java兼容。 但是,好消息是Redis Sentinel和Java可以使用诸如Redisson的框架轻松地协同工作,Redisson是Redis的Java客户端,它使用许多熟悉的Java编程语言构造。 Redisson提供了数十种以分布式方式实现的Java对象,集合,锁和服务,从而允许用户在不同的应用程序和服务器之间共享它们。

以下代码示例演示了如何在Java中开始使用Redis Sentinel。 设置配置文件和Redisson客户端后,该应用程序执行一些基本操作以演示将Redis与Java一起使用的可行性。

 package redis.demo;

 import org.redisson.Redisson;

 import org.redisson.api.RBucket;

 import org.redisson.api.RedissonClient;

 /**

  * Redis Sentinel Java example

  *

  */

 public class Application 

 {

     public static void main( String[] args )

     {

         Config config = new Config();

         config.useSentinelServers()

               .addSentinelAddress("redis://127.0.0.1:6379")

               .setMasterName("myMaster");

         RedissonClient redisson = Redisson.create(config);

         // perform operations

         // implements java.util.concurrent.ConcurrentMap

         RMap<String, String> map = redisson.getMap("simpleMap");

         map.put("mapKey", "This is a map value");

         String mapValue = map.get("mapKey");

         System.out.println("stored map value: " + mapValue);

         // implements java.util.concurrent.locks.Lock

         RLock lock = redisson.getLock("simpleLock");

         lock.lock();

         try {

            // do some actions

         } finally {

            lock.unlock();

         }

         redisson.shutdown();

     }

 }

总结

请务必注意,Redisson用户必须指定至少一台Redis Sentinel服务器和至少一台Redis主节点。 启动后,Redisson继续监视Redis Sentinel中可用的主节点和从节点以及Sentinel节点的列表。 这意味着用户无需监视Redis拓扑的状态即可处理故障转移情况; Redisson独自完成了此任务。

Java中的Redis 哨兵高可用性的更多相关文章

  1. 在java中使用redis

    在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了.而且,api和redis的语法几乎完全相同.以下简单的测试: 参考:http://www.runoob.com ...

  2. JAVA中使用Redis

    上节讲解了如何在centos上安装redis,点击查看.本节我们学习在java中使用redis.需要将jedis-*.jar添加到classpath(点击下载),如果使用连接池还需要commons-p ...

  3. Redis入门教程(三)— Java中操作Redis

    在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...

  4. Redis笔记(六):Java中使用Redis

    Java程序使用Redis 添加依赖包 Maven依赖方式 <dependency> <groupId>redis.clients</groupId> <ar ...

  5. java中使用redis --- Hash的简单应用

    1.java代码 public class RedisTest01 { public static void main(String[] args) { // connect redis server ...

  6. java中使用 redis (转载)

    jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...

  7. Redis(2)用jedis实现在java中使用redis

    昨天已经在windows环境下安装使用了redis. 下面准备在java项目中测试使用redis. redis官网推荐使用jedis来访问redis.所以首先准备了jedis的jar包,以及需要依赖的 ...

  8. Java中的Redis应用

    1.配置redis集群   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding ...

  9. Java中操作Redis

    一.server端安装 1.下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载后的文件为: 解压后,选择当前64位win7系统对 ...

随机推荐

  1. React Native-组件的引用

    之前文章中,我们使用了许多React Native组件,也定义了一些组件.但是我们都没有定义组件的标识,我们都是通过回调方法处理组件对应的事件,这种情况能满足绝大多数需求,有些情况我们需要对组件进行操 ...

  2. 2018-7-5-dotnet-设计规范-·-抽象定义

    title author date CreateTime categories dotnet 设计规范 · 抽象定义 lindexi 2018-07-05 15:48:20 +0800 2018-2- ...

  3. @topcoder - TCO19 Regional Wildcard Wildcard Round - D1L2@ Diophantine

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 令 p[] 为质数序列:p[0] = 2, p[1] = 3, ...

  4. MapReduce数据流-Mapper

  5. oracle函数 SUBSTRB(c1,n1[,n2])

    [功能]取子字符串 [说明]多字节符(汉字.全角符等),按2个字符计算 [参数]在字符表达式c1里,从n1开始取n2个字符;若不指定n2,则从第y个字符直到结束的字串. [返回]字符型,如果从多字符右 ...

  6. uniapp点击底部tabbar不跳转页面

    一个项目,其设想是这样的,当我进入页面,发现有新版本,提示用户之后,用户点击确定跳转到下载页面. 弹出框要用自己封装的,因为uniapp的弹出框不同的手机上展示的样子不一样,领导的是华为(在这里悄悄吐 ...

  7. H3C ICMP

  8. PL/SQL语言的学习笔记

    一.PL/SQL简介1.什么是PL/SQL程序?(PL/SQL是对SQL语言的一个扩展,从而形成的一个语言) 2.PL/SQL语言的特点(操作Orcale数据库效率最高的就是PL/SQL语言,而不是C ...

  9. squid+iptables实现网关防火墙

    需求说明:此服务器用作网关.MAIL(开启web.smtp.pop3).FTP.DHCP服务器,内部一台机器(192.168.0.254)对外提供dns服务,为了不让无意者轻易看出此服务器开启了ssh ...

  10. sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' (小程序)

    sdk uncaught third Error Cannot assign to read only property 'constructor' of object '#<V>' 在a ...