获取集群信息之Redis
来源:互联网 发布:中世纪2优化9成神话了 编辑:程序博客网 时间:2024/05/17 09:08
Redis获取方式
属性文件
#redis监控配置master.ip=10.2.4.12master.port=6379slave.ip=10.2.4.13,10.2.4.14slave.port=6379maxActive=50maxIdle=5maxWait=-1
监控timer
import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import java.util.Properties;import java.util.Timer;import java.util.TimerTask;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * RedisMonitor schedule */public class RedisMonitor { private static Timer timer = new Timer(); private static String master_ip = ""; private static int master_port = 0; private static String slave_ip = ""; private static int slave_port = 0; private static int maxActive = 0; private static int maxIdle = 0; private static int maxWait = 0; private static JedisPool jedisWritePool; static { InputStream is = RedisMonitor.class .getResourceAsStream("/monconfig.properties"); Properties props = new Properties(); try { props.load(is); master_ip = props.getProperty("master.ip"); master_port = Integer.parseInt(props.getProperty("master.port")); slave_ip = props.getProperty("slave.ip"); slave_port = Integer.parseInt(props.getProperty("slave.port")); maxActive = Integer.parseInt(props.getProperty("maxActive")); maxIdle = Integer.parseInt(props.getProperty("maxIdle")); maxWait = Integer.parseInt(props.getProperty("maxWait")); } catch (Exception e) { System.out.println("monconfig redisconfig error"); } if (null == master_ip || "".equals(master_ip) || 0 == master_port || 0 == slave_port || 0 == maxActive || 0 == maxIdle || 0 == maxWait || null == slave_ip || "".equals(slave_ip)) { System.out.println("monconfig redisconfig error"); } else { checkRedisMaster(); try { timer.schedule(new TimerTask() { @Override public void run() { System.out.println(start()); } }, 5000, 5000); } catch (Exception e) { } } } public static void main(String[] args) { } public static boolean start() { //优先检测master 然后再坚持slave return checkSlave(); } /** * 启动写redis服务 */ public static boolean checkRedisMaster() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxActive); config.setMaxIdle(maxIdle); config.setMaxWaitMillis(maxWait); config.setTestOnBorrow(false); try { if (jedisWritePool == null) { jedisWritePool = new JedisPool(config,master_ip,master_port); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 获取写Jedis实例 * */ public static Jedis getWriteJedis() { try { if (jedisWritePool != null) { Jedis resource = jedisWritePool.getResource(); return resource; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 查看redis的状态信息 * @return */ public static String getRedisStatus() { Jedis jedis = null; try { jedis = getWriteJedis() ; return jedis.info() ; } catch (Exception e) { e.printStackTrace(); return null; } finally { returnWriteResource(jedis) ; } } /** * 释放jedis资源 */ public static void returnWriteResource(final Jedis jedis) { if (jedis != null) { jedisWritePool.returnResource(jedis); } } public static boolean checkSlave(){ String redisInfo = getRedisStatus() ; try{ String[] array = redisInfo.split("# ") ; String replication = array[6]; String[] rArray = replication.split("\n") ; Map m = new HashMap() ; for (String item : rArray) { int index = item.indexOf(":") ; if (index != -1) { String[] value = item.split(":") ; m.put(value[0].trim(), value[1].trim()) ; } } //slave与配置的个数一致则正常 否则 失败 if(Integer.parseInt(String.valueOf(m.get("connected_slaves"))) == slave_ip.split(",").length){ System.out.println("redis_slave_total:"+slave_ip.split(",").length +" connected_slaves:"+String.valueOf(m.get("connected_slaves"))); return true; }else{ System.out.println("redis_slave_total:"+slave_ip.split(",").length +" connected_slaves:"+String.valueOf(m.get("connected_slaves"))); return false; } }catch (Exception e) { System.out.println("redis master down"); return false; } }}
阅读全文
0 0
- 获取集群信息之Redis
- Hadoop之客户端获取NameNode集群信息
- Redis集群之官方集群
- Redis集群之twemproxy
- Redis之十七 集群
- redis之集群
- redis 集群之动态添加redis节点,删除指定ID的redis节点,以及查看redis集群中各个节点的信息
- redis以集群方式运行集群并查看集群信息
- redis集群状态信息维护脚本
- Redis 实践之集群方案
- NoSql之Redis集群原理
- NoSql之Redis集群搭建
- NoSQL之Redis---集群教程
- redis集群之读写分离
- Redis进阶8之-集群
- Redis解析之集群数据结构
- Redis入门指南之集群
- redis集群之添加节点
- YOLO9000(一个先进实时的目标检测系统)
- 由U盘里的脚本不在linux下不能修改权限引发的修改U盘格式的问题
- Debug 调试 Java 程序
- C#开发中提示无法加载DLL"***.dll":找不到指定的模块(异常来自HRESULT:0x8007007E)问题的解决办法
- nginx之location 匹配规则
- 获取集群信息之Redis
- 40个Java多线程问题总结
- python实现随机掷色子并统计绘图
- 判断一个指定的Service是否存在的方法
- setTimeout()和setInterval()区别
- Android Studio对话框多种形式总结
- POJ
- 还是畅通工程 【hdu-1233】 【最小生成树】
- 51nod 1267 4个数和为0(双指针好题)