Java中的Redis 哨兵高可用性
让我们探索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 哨兵高可用性的更多相关文章
- 在java中使用redis
在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了.而且,api和redis的语法几乎完全相同.以下简单的测试: 参考:http://www.runoob.com ...
- JAVA中使用Redis
上节讲解了如何在centos上安装redis,点击查看.本节我们学习在java中使用redis.需要将jedis-*.jar添加到classpath(点击下载),如果使用连接池还需要commons-p ...
- Redis入门教程(三)— Java中操作Redis
在Redis的官网上,我们可以看到Redis的Java客户端众多 其中,Jedis是Redis官方推荐,也是使用用户最多的Java客户端. 开始前的准备 使用jedis使用到的jedis-2.1.0. ...
- Redis笔记(六):Java中使用Redis
Java程序使用Redis 添加依赖包 Maven依赖方式 <dependency> <groupId>redis.clients</groupId> <ar ...
- java中使用redis --- Hash的简单应用
1.java代码 public class RedisTest01 { public static void main(String[] args) { // connect redis server ...
- java中使用 redis (转载)
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...
- Redis(2)用jedis实现在java中使用redis
昨天已经在windows环境下安装使用了redis. 下面准备在java项目中测试使用redis. redis官网推荐使用jedis来访问redis.所以首先准备了jedis的jar包,以及需要依赖的 ...
- 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 ...
- Java中操作Redis
一.server端安装 1.下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载后的文件为: 解压后,选择当前64位win7系统对 ...
随机推荐
- Cacti 加入多台主机带宽汇聚
前面我写了一个cacti加入主机带宽监控的博客.能够參考http://blog.csdn.net/dai451954706/article/details/35272465 .有时可能 ...
- mysql LIMIT 子句用法及原理
使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,已 经为我们提供了这样一个功能. LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接 ...
- 突然想起一个有趣的问题:FAT32&NTFS?
在大学的时候老师提过一个有意思的问题4G的程序存储在什么格式以上的电脑? 首先普及一下两种格式的区别 FAT32:此硬盘格式不支持4GB以上大文件,使用32位文件分配表. NTFS:微软最新文件格式, ...
- Python基础:27执行环境
一:可调用对象 可调用对象,是任何能通过函数操作符“()”来调用的对象.Python 有4 种可调用对象:函数,方法,类,以及一些类的实例. 1:函数 python 有 3 种不同类型的函数对象. a ...
- 【codeforces 798D】Mike and distribution
[题目链接]:http://codeforces.com/contest/798/problem/D [题意] 让你选一个下标集合 p1,p2,p3..pk 使得2*(a[p1]+a[p2]+..+a ...
- dev stg prd 开发 测试 生产环境
dev development 开发环境stg stage 测试环境prd product 线上环境
- hdu 5745 La Vie en rose(2016多校第二场)
La Vie en rose Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- 权值线段树+动态开点[NOI2004]郁闷的出纳员
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> ...
- hdu 4419 Colourful Rectangle (离散化扫描线线段树)
Problem - 4419 题意不难,红绿蓝三种颜色覆盖在平面上,不同颜色的区域相交会产生新的颜色,求每一种颜色的面积大小. 比较明显,这题要从矩形面积并的方向出发.如果做过矩形面积并的题,用线段树 ...
- Install Openjdk11 to Ubuntu 18.04 LTS
Ubuntu 18.04 LTS系统上通过sudo apt install openjdk-11-*命令安装的jdk11版本依然是jdk10,怎么样才能安装openjdk 11呢,今天,我们就来完 ...