同步mysql数据库到codis缓存中

public void syncRule() {
// 根据时间戳获取Mycat中规则表数据
logger.info("start ...");
String sql = "";
// 若最后一次同步时间为空,则按最后更新时间排序,取最小的时间作为当前时间戳
if (ruleCurrentTimestamp != null) {
sql = "select * from t_table where update_date >" + ruleCurrentTimestamp + " order by update_date limit 10";
} else {
sql = "select * from t_table order by update_date limit 10";
} // 升序会将最后一次的时间也就是最大的时间作为当前的currentTimeStamp
jdbcTemplate.query(sql, new Object[] {}, new RowMapper<String>() {
public String mapRow(ResultSet result, int rowNum) throws SQLException {
ruleCurrentTimestamp = result.getLong("update_date");
return result.getString("rule_code");
}
}); // objs 即是Mycat里面查询出来需要同步的数据
List<JSONObject> objs = jdbcTemplate.query(sql, new Object[] {}, new RowMapper<JSONObject>() {
public JSONObject mapRow(ResultSet result, int rowNum) throws SQLException { int c = result.getMetaData().getColumnCount();
JSONObject obj = new JSONObject();
for (int t = 1; t <= c; t++) {
if (result.getObject(t) == null) {
continue;
} else {
obj.put(result.getMetaData().getColumnLabel(t).toLowerCase(), result.getObject(t));
}
}
return obj;
}
}); /**
* 将风控事件表的rule_code作为key ,该条数据作为value,写入Codis中
*/
try {
for (JSONObject obj : objs) {
logger.info(obj.get("rule_code").toString());
jedis.set(obj.get("rule_code").toString(), obj.toJSONString());
}
logger.info("同步到Codis成功!!!");
rulePreviousTimestamp = ruleCurrentTimestamp;
// 将写入成功后的时间写到zookeeper中
zkClient.writeData(Constant.RULE_TIMESTAMP_PATH, String.valueOf(ruleCurrentTimestamp));
} catch (Exception e) {
logger.info("同步到Codis失败!!!");
ruleCurrentTimestamp = rulePreviousTimestamp;
logger.error(e.getMessage(), e);
}
}

同步数据库到Codis代码的更多相关文章

  1. Netsharp快速入门(之5) 基础档案(之D 实体建模 生成实体代码、同步数据库、配置插件运行时)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 3.3.1  同步数据库并生成dll文件 1.在基础档案和销售管理项目上右击,选择同步数据库结构来创建数据库表 2. 在基础档案项目 ...

  2. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】

    在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...

  3. SQL SERVER 2008 数据库隔离级别代码演示

    SQL SERVER 2008 数据库隔离级别代码演示   个隔离级别(其实这是SQL 工业标) 种隔离级别,本身没有优劣之分,完全取决于应用的场景. 本质上,他们是在 隔离性(紊乱程度) 和 灵活性 ...

  4. Linux上搭建Elasticsearch服务器并同步数据库

    1.准备工作         下载Elasticsearch版本号2.3.4 https://www.elastic.co/downloads/past-releases/elasticsearch- ...

  5. Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)

    本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...

  6. iOS开发数据库篇—SQL代码应用示例

    iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在 ...

  7. 一个非常标准的Java连接Oracle数据库的示例代码

    最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项“库”,然后点击“添加外部Jar”,选择“D:\Oracle\app\ ...

  8. Java连接Oracle数据库的示例代码

    最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径 ->配置构建路径,选择第三项“库”,然后点击“添加外部Jar”,选择 “D:\Oracle\ap ...

  9. LINUX安装SVN+添加自动同步+远程下载最新代码

    LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...

随机推荐

  1. Python 模块搜索路径

    Python 会在什么地方寻找文件来导入模块? 使用命名为 path 变量的存储在标准 sys 模块 下的一系列目录名和 ZIP 压缩文件. 你可以读取和修改这个列表.下面是在我的 Mac 上 Pyt ...

  2. [19/02/23]ToolsShare 工具分享 VPNTethering Android (Root Required)

    To be short, VPN Tethering is a quite useful tool when you want to share your private network with s ...

  3. redis 集群分配哈希曹

    重新分配哈希曹: ip:port 为当前redis集群任意节点ip和port redis-cli --cluster reshard ip:port 操作如图: 分配哈希槽有两种方式: 1.在其他节点 ...

  4. java的ArrayList使用方法详解

    ArrayList是Java的链表类,在项目开发中十分常见,那么怎样对ArrayList进行添加.删除.修改.查询.遍历呢?本文将进行详细阐述. 工具/原料   java 一.ArrayList的添加 ...

  5. hihoCoder 1133 二分·二分查找之k小数(TOP K算法)

    #1133 : 二分·二分查找之k小数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很 ...

  6. [ACG001E] BBQ hard [dp]

    题面: 传送门 思路: 首先,一个暴力的想法 对于每一对pack,求出f(ai+aj,bi+bj),其中f(x,y)=(x+y)!/(x!y!),也就是x个a,y个b的排列方式个数 然后转化模型,将f ...

  7. PE

    不是projecteuler,我想说的是projecteuclid..似乎是一个有很多数学文献的网站..? PE541似乎是一道很有趣的题目,有一个暴力大概就是首先转化一下模型变成找\(\sum_{x ...

  8. StringBuilder与StringBuffer

    转:http://www.cnblogs.com/pepcod/archive/2013/02/16/2913557.html JAVA中用于处理字符串常用的有三个类: java.lang.Strin ...

  9. 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道

    python代码见码云:20179204_gege 参考博客Python黑帽子--黑客与渗透测试编程之道.关于<Python黑帽子:黑客与渗透测试编程之道>的学习笔记 第2章 网络基础 t ...

  10. 【HDOJ5558】Alice's Classified Message(后缀数组)

    题意:给定一个长度为n的下标从0开始的小写字母字符串,每次对于当前的i寻找一个j使得后缀i与后缀j的lcp最大,(j<i)若lcp相同则取较小的 若lcp为0则输出0与当前字符,i自增1,否则输 ...