通过哨兵机制实现Redis主从配置以及java调用
Redis版本:3.0.7
操作环境:Linux
一、redis 主从配置的作用是什么
redis主从配置,配置master 只能为写,slave只能为读,在客户端对poolconnect请求时候,,会将读请求转到slave上面,写请求转到master上面,同时,master和slave有同步功能,这就实现了(数据层)读写分离对上层(逻辑层)透明的正常逻辑。无需再通过中间件或者代码进行读写分析实现。

二、如何实现主从配置
以一台服务器,配置两个端口号为例子做介绍
redis实现主从配置最关键的两个两个配置文件是redis.conf和sentinel.conf,分别配合redis-server和redis-sentinel使用;下面做详细讲解。
主配置文件:
#开启后台运行模式
daemonize yes
#指定进程id存放位置,也可以用默认的
pidfile /usr/local/webserver/redis/run/redis.pid
#指定端口号
port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "" databases 16 save 900 1
save 300 10
save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb
#指定数据存放位置,也可以用默认的
dir /usr/local/webserver/redis/db slave-serve-stale-data yes
#从redis只能读
slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100
#本redis密码
requirepass 123456
#主redis密码
masterauth "123456" appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512
hash-max-ziplist-value 64 list-max-ziplist-entries 512
list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128
zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
sentinel.conf(哨兵机制):
port 26379
dir "/usr/local/webserver/redis/db"
# 守护进程模式
daemonize yes
# 指明日志文件名
logfile "./sentinel.log"
#设置监控的主redis的ip以及端口号,以及投票最低数
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 18000
sentinel auth-pass mymaster 123456
从配置文件:
redis.conf:
daemonize yes pidfile /usr/local/webserver/redis-slave1/run/redis.pid port 63791 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "" databases 16 save 900 1
save 300 10
save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /usr/local/webserver/redis-slave1/db slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 requirepass 123456
masterauth "123456" appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512
hash-max-ziplist-value 64 list-max-ziplist-entries 512
list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128
zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes #指定主redis以及相应的端口号
slaveof 127.0.0.1 6379
sentinel.conf:
#sentinel端口
port 263791
#工作路径,注意路径不要和主重复
dir "/usr/local/webserver/redis-slave1/db"
# 守护进程模式
daemonize yes
# 指明日志文件名
logfile "./sentinel.log"
#哨兵监控的master,主从配置一样,
sentinel monitor mymaster 127.0.0.1 6379 1
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 5000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
#设置master和slaves验证密码
sentinel auth-pass mymaster 123456
同理,如果要实现多个从配置,可以按照以上从配置方式多定义几个端口号就可以了。
在进行自动故障转移的时候,选中为主redis的redis.conf文件会将原来slaveof那一行去掉,并重新在从redis配置文件中指定主redis的信息
三、java中调用
import java.util.HashSet;
import java.util.Set; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool; public class RedisSentinelTest { @SuppressWarnings("deprecation")
public static void main(String[] args) { Set<String> sentinels = new HashSet<String>();
String hostAndPort1 = "127.0.0.1:26379";
String hostAndPort2 = "127.0.0.1:26380";
sentinels.add(hostAndPort1);
sentinels.add(hostAndPort2); String clusterName = "mymaster";
String password = "123456"; JedisSentinelPool redisSentinelJedisPool = new JedisSentinelPool(clusterName,sentinels,password); Jedis jedis = null;
try {
jedis = redisSentinelJedisPool.getResource();
// jedis.set("key", "value");
System.out.println(jedis.get("key"));
} catch (Exception e) {
e.printStackTrace();
} finally {
redisSentinelJedisPool.returnBrokenResource(jedis);
} redisSentinelJedisPool.close();
} }
通过哨兵机制实现Redis主从配置以及java调用的更多相关文章
- centos6.5 redis 安装配置及java调用
1.安装gcc 执行命令 yum install gcc 2. 安装ruby环境 yum install ruby yum install rubygems gem install redis 下载 ...
- redis主从配置及其java的调用(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/gsying1474/article/de ...
- Redis 主从配置密码以及哨兵
目录: Redis 主从介绍 哨兵机制 Redis 主从配置 环境 安装 启动服务 检查主从状态 测试数据同步 默认是读写分离的 Redis Sentinel 配置 主Redis宕机测试 配置多个哨兵 ...
- redis主从配置+sentinel哨兵
redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...
- Redis主从配置详细过程
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...
- redis主从配置及主从切换 转
redis主从配置及主从切换 转自 http://blog.sina.com.cn/s/blog_67196ddc0101h8v0.html (2014-04-28 17:48:47) 转载▼ 分 ...
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区 作者:fuquanjun [字体:大 中 小] 一:环境介绍: M ...
- Linux中redis主从配置
假设要在6380开启redis 1.添加配置文件:复制redis.conf为redis_6380.conf 2.修改配置文件:修改redis_6380.conf中port.pidfile 3.防火墙: ...
- spring集成redis——主从配置以及哨兵监控
Redis主从模式配置: Redis的主从模式配置是非常简单的,首先我们需要有2个可运行的redis环境: master node : 192.168.56.101 8887 slave node: ...
随机推荐
- 从数据库提取数据通过jstl显示在jsp页面上
从数据库提取数据通过jstl显示在jsp页面上 1.ConnectDB.java连接数据库,把数据转换成list public class ConnectDB { private final stat ...
- js加密
在项目中,经常需要使用加密来保障数据的安全性,虽然可以通过在后台加密再传给前台,但这样无疑会增加后台的服务器的压力.所以在js中使用加密算法也就应运而生了. 一.base64加密 需要引入base64 ...
- 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例
Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...
- 规范 : angular ui router path & params
在seo文章中提到url的path 必须是 why-us,而不是whyUS 所以定了规范,所有的path 必须why-us path ?后尾的是用来filter的,所以可以WhyUs 如果是不需要给s ...
- 业务逻辑 : 未完 : easybook.com
Content>social media facebook, twitter, google+, instagram, pinterest (Question : How to update n ...
- 写好你的JavaScript
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不 ...
- 卷积神经网络(CNN)前向传播算法
在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...
- 【转载】JavaScript继承详解一
面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++.C#.Java)的开发经验. 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则 ...
- appium desktop 版本发布
Appium Desktop is an open source app for Mac, Windows, and Linux which gives you the power of the Ap ...
- 通过udev创建ASM共享磁盘(RAC)
OS:RedHat EL6.0 Oracle: Oracle 11gR2 在Oracle 11gR2,构建RAC时可以通过ASM创建asm disk,但是需要安装asmlib相关软件:对于RedH ...