Redis版本:3.0.7

操作环境:Linux

一、redis 主从配置的作用是什么

  redis主从配置,配置master 只能为写,slave只能为读,在客户端对poolconnect请求时候,,会将读请求转到slave上面,写请求转到master上面,同时,master和slave有同步功能,这就实现了(数据层)读写分离对上层(逻辑层)透明的正常逻辑。无需再通过中间件或者代码进行读写分析实现。

二、如何实现主从配置

  以一台服务器,配置两个端口号为例子做介绍

  redis实现主从配置最关键的两个两个配置文件是redis.conf和sentinel.conf,分别配合redis-server和redis-sentinel使用;下面做详细讲解。

  主配置文件:

  redis.conf:

 #开启后台运行模式
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调用的更多相关文章

  1. centos6.5 redis 安装配置及java调用

    1.安装gcc 执行命令  yum install gcc 2. 安装ruby环境 yum install ruby yum install rubygems gem install redis 下载 ...

  2. redis主从配置及其java的调用(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/gsying1474/article/de ...

  3. Redis 主从配置密码以及哨兵

    目录: Redis 主从介绍 哨兵机制 Redis 主从配置 环境 安装 启动服务 检查主从状态 测试数据同步 默认是读写分离的 Redis Sentinel 配置 主Redis宕机测试 配置多个哨兵 ...

  4. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

  5. Redis主从配置详细过程

    Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...

  6. redis主从配置及主从切换 转

    redis主从配置及主从切换 转自 http://blog.sina.com.cn/s/blog_67196ddc0101h8v0.html (2014-04-28 17:48:47) 转载▼   分 ...

  7. Redis主从配置及通过Keepalived实现Redis自动切换高可用

    Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体:大 中 小]   一:环境介绍: M ...

  8. Linux中redis主从配置

    假设要在6380开启redis 1.添加配置文件:复制redis.conf为redis_6380.conf 2.修改配置文件:修改redis_6380.conf中port.pidfile 3.防火墙: ...

  9. spring集成redis——主从配置以及哨兵监控

    Redis主从模式配置: Redis的主从模式配置是非常简单的,首先我们需要有2个可运行的redis环境: master node : 192.168.56.101 8887 slave node: ...

随机推荐

  1. eclipse+HBASE开发环境搭建(已实践)

    开发准备: jdk1.8.45 hbase-1.2.2(windows下和linux个留一份) hadoop-2.7.2(linux一份) Linux系统(centos或其它) Hadoop安装环境 ...

  2. 漂亮的代码2:遍历文件夹目录,使用promise

    看到一个问题: 找到文件夹下所有文件: 自己写了一个: function walk(dir, ext, callback) { ext = ext.charAt(0) === "." ...

  3. 【转】jqGrid学习之安装

    jqGrid安装很简单,只需把相应的css.js文件加入到页面中即可. 按照官网文档: /myproject/css/             ui.jqgrid.css             /u ...

  4. LINQ中,Single()、SingleOrDefault()的解析、示例

    LINQ一般查询到的结果是IEnumerable<T>集合类型,想要从中取出单一的元素,可以使用Single.First.Last.ElementAt等方法,以及它们带有OrDefault ...

  5. collectionView布局

    关于 collectionView的layout布局方法: 设置cell的间距,行间距,组与组之间的间距,都是在layout里面来设置. 包括,滚动方向. -(void)prepareLayout [ ...

  6. 规范 : angular ui router path & params

    在seo文章中提到url的path 必须是 why-us,而不是whyUS 所以定了规范,所有的path 必须why-us path ?后尾的是用来filter的,所以可以WhyUs 如果是不需要给s ...

  7. 每天一个Linux命令(10)--cat命令

    --首先,恭喜你,这是第十个命令啦. --为啥第十个就要恭喜?没啥特别呀? --因为逢十进一啊! cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或 ...

  8. wemall app商城源码Android短信监听接收器

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  9. 2208: [Jsoi2010]连通数

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1371  Solved: 557[Submit][Status ...

  10. 1202: [HNOI2005]狡猾的商人

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1554  Solved: 745[Submit][Stat ...