package com.nari.server.Redis;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Timer;
import com.google.gson.Gson;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
public class DBToolKit {
private static final Timer timer = new Timer();
private static Logger loger = Logger.getLogger(DBToolKit.class);
private static final String _S = "CPS:";
public static HashMap<Short,controllerCPSEntity> _SingleMap = new HashMap<Short,controllerCPSEntity>();
public static final void initialize() {
RedisFactory.initRedis(true);
initStore();
}
public static final void reload() {
initStore_reload();
}
private static final void initStore() {
_SingleMap.clear();
Iterator<String> slist = RedisFactory.getRealinker().keys(_S+"*").iterator();
while(slist.hasNext()) {
Map<String, String> tmap = RedisFactory.getRealinker().hgetAll(slist.next());
controllerCPSEntity single = RedisFactory.MapToBean(tmap, controllerCPSEntity.class);
single.setActive(false);
single.setOnline(false);
single.setFirst(true);
single.setUsed(true);
single.setSendfirst(false);
single.setFreshtime(System.currentTimeMillis());
try {
DBToolKit.writeToStore(single);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
loger.info("Redis Store size is : " + _SingleMap.size());
}
private static final void initStore_reload() {
_SingleMap.clear();
Iterator<String> slist = RedisFactory.getRealinker().keys(_S+"*").iterator();
while(slist.hasNext()) {
Map<String, String> tmap = RedisFactory.getRealinker().hgetAll(slist.next());
controllerCPSEntity single = RedisFactory.MapToBean(tmap, controllerCPSEntity.class);
single.setActive(false);
//预留
try {
DBToolKit.writeToStore(single);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
_SingleMap.put(single.getCpsid(), single);
}
loger.info("Redis Store size is : " + _SingleMap.size());
}
public static final controllerCPSEntity readFromStore(long id) {
return _SingleMap.get((short)id);
}
public static controllerCPSEntity getFromStore(long id){
return _SingleMap.get((short)id);
}
private static final controllerCPSEntity writeToStore(controllerCPSEntity one) throws Throwable {
if(RedisFactory.getRealinker()!=null) {
loger.info("- writeToStore - ");
try {
RedisFactory.getRealinker().hmset(_S+one.getCpsid(), RedisFactory.BeanToMap(one));
}catch(Throwable e) {
loger.error("writeToStore() error "+e);
throw e;
}finally {
}
}else {
loger.info("---- writeToStore linker == null -------- ");
}
try {Thread.sleep(50);} catch(Exception e) {}
return _SingleMap.put(one.getCpsid(), one);
}
private static final void writeToFresh(RefJSON one) {
if(RedisFactory.getPublisher()!=null) {
try {
loger.info("- writeToFreshToMQTT - ");
String res = RedisFactory.BeanToMap(one).toString();
RedisFactory.getPublisher().publish("rdatacps", res);
}catch(Throwable e) {
loger.error("writeToFresh() error "+e);
try {
throw e;
} catch (Throwable e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
try {Thread.sleep(50);} catch(Exception e) {}
}
public static final void D5000writeToFresh(RefJSON one) {
if(RedisFactory.getPublisher()!=null) {
try {
loger.info("- writeToFreshToMQTT - ");
String res = RedisFactory.BeanToMap(one).toString();
RedisFactory.getPublisher().publish("rcmd", res);
}catch(Throwable e) {
loger.error("writeToFresh() error "+e);
try {
throw e;
} catch (Throwable e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
try {Thread.sleep(50);} catch(Exception e) {}
}
private static final void writeToFreshAlarm(RefJSON one) {
if(RedisFactory.getPublisherAlarm()!=null) {
String mesg = one.toJson();
loger.info("- writeToFreshAlarm - ");
try {
RedisFactory.getPublisherAlarm().publish("rcalarm", mesg);
}catch(Throwable e) {
loger.error("writeToFreshAlarm() error "+e);
throw e;
}
}
try {Thread.sleep(50);} catch(Exception e) {}
}
public static final boolean checkConfiged(long id) {
controllerCPSEntity one = readFromStore(id);
if(one==null) return false;
return one.isUsed();
}
//非登录处理
public static final void pushToDB(short id, CustomFaceCoder ack) {
controllerCPSEntity in = readFromStore(id);
if(in == null) {
in = new controllerCPSEntity();
}
controllerCPSEntity tmp = (controllerCPSEntity)in.clone();
if(in.getAulist()!=null) in.clearAulist();
if(in.getDulist()!=null) in.clearDulist();
ack.wrap(in); //把该条协议内容刷入 交互规范controllerCPS内
// in.freshOnlineTime(System.currentTimeMillis());//刷新时间戳
if(!in.equals(tmp)) { ; } //数值相等时处理逻辑
//写入redis持久化,发布到topic
{
writeToFresh(in);
//关联后面是否注册
if(in.isFirst()) {//为true表示是第一次发送,
in.setFirst(false);//发送过了
}
try {
writeToStore(in);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// writeToFreshAlarm(in);
}
}
public static final void pushToDB(controllerCPSEntity on,boolean fresh) {
if(fresh) {
try {
controllerCPSEntity in = writeToStore(on);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
writeToFreshAlarm(on);
}
}
public static final void checkOnline() {
long now = System.currentTimeMillis();
for (@SuppressWarnings("rawtypes") Map.Entry entry : _SingleMap.entrySet()) {
controllerCPSEntity single = (controllerCPSEntity) entry.getValue();
long one = single.getFreshtime();
boolean of = single.isOnline();
controllerCPSEntity old = DBToolKit.getFromStore(single.getCpsid());
//设置2分钟监测到离线,10分钟算设备离线
if(one>0 && (now-one)>6000) {
if(old!=null) {
if(old.isOnline()) {
single.setOnline(false);
System.out.println("通知实际离线了");
// writeToStore(single);
// writeToFresh(single);
}
}
}
}
}
public static Boolean compareAlarmflagcx(int alarmflag,int[] alarmflagcx) {
Boolean result = false;
if(alarmflag!=0) {
result=true;
}
for(int i=0;i<alarmflagcx.length;i++) {
if(alarmflagcx[i]!=0) {
result = true;
break;
}
}
return result;
}
public static void main(String[] args) throws InterruptedException {
//初始化资源配置
RedisFactory.initRedis(false);
controllerCPSEntity central = new controllerCPSEntity();
central.setCpsid((short)1);
RedisFactory.getRealinker();
RedisFactory.getPublisher();
RedisFactory.getPublisherAlarm();
for(int i=0;i<1;i++) {
new Thread(new Runnable() {
@SuppressWarnings("resource")
@Override
public void run() {
// TODO Auto-generated method stub
String name = Thread.currentThread().getName();
System.out.println("***********Thread** "+name+" ****");
while(true) {
try {
Thread.sleep(10000);
// RedisFactory.getRealinker().hmset(_S+central.getAddr(), RedisFactory.BeanToMap(central));
writeToStore(central);
//发布
writeToFresh(central);
writeToFreshAlarm(central);
// Thread.sleep((long)(Math.random()*10000)+10000);
System.out.println(Thread.currentThread().getName()+"++++++++++++----------"+central.toJson());
}catch(Exception e) {
e
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
测试Jedis在10万次读写级别情况下的读写效率。1)单 Jedis 读写1条命令,读写玩即close() 2) 单Jedis读写多条命令,此种情况尝试不释放Jedis连接,由于Jedis本质是tcp长连接,需要做异常判断 3)Pipeline方式读写,此种方式效率最高,但是由于将多条命令缓存与Outpustream并在syn()方法时一次性flush(),若本次出现异常,会影响全部命令执行。
资源推荐
资源详情
资源评论
















收起资源包目录







































































































































共 94 条
- 1
资源评论

- 伟大的瑞寳2022-01-04答非所问!

不爱萝卜的大兔纸
- 粉丝: 5
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- ArcGIS三维建模步骤.doc
- 年TCL销售网络垂直管理变革实施细则.doc
- 校园网综合布线方案.doc
- 通信公司员工个人先进事迹范文.doc
- 二手货交易网站策划书.docx
- 基于net的办公自动化系统设计与实现.doc
- 突发事件网络舆情的政府引导策略探究.doc
- 企业办公自动化管理系统可行性分析报告.doc
- 算法是解决具体问题的方法.pptx
- 网络安全教育公开课获奖教案设计6篇.docx
- 项目管理作业有答案样本.doc
- 基于vhdl的复杂可编程逻辑器件cpld应用技术.doc
- 有代码信管一班蓝俊杰单位仪器设备基本信息管理软件设计.doc
- 2023年大学计算机应用基础知识试题.doc
- 智能大厦物业管理自动化系统物业管理及实例分析.pdf
- 浅析LTE网络优化方法与思路(UPDATE).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
