zoukankan      html  css  js  c++  java
  • redis与mysql数据同步

    应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,

    二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主

    键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。

     1 String tbname = "login";
     2         
     3 //获取mysql表主键值--redis启动时
     4 long id = MySQL.getID(tbname);
     5 //设置redis主键值--redis启动时
     6 redisService.set(tbname, String.valueOf(id));
     7 
     8 System.out.println(id);
     9 long l = redisService.incr(tbname);
    10 System.out.println(l);
    11 Login login = new Login();
    12 login.setId(l);
    13 login.setName("redis");
    14 redisService.hmset(String.valueOf(login.getId()), login);
    15 
    16 boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')");
    17 /**
    18  * 
    19  * 队列处理器更新mysql失败:
    20  * 
    21  * 清除缓存数据,同时主键值自减
    22  */
    23 if (!b){
    24     redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
    25 }
    26 System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
    27 System.out.println(redisService.get(tbname));
    28 复制代码
  • 相关阅读:
    Sql Server截断日志(转)
    C#/VB.NET语法的比较(转)
    ReportViewer矩阵报表
    逐步学习 iPhone App 开发(1)
    一月二十四日,无家可归
    再见2009
    poj 1376 机器人广搜
    hdu 1004 颜色问题
    hdu 2734 简单地字符串处理
    1116 贪婪的送礼者
  • 原文地址:https://www.cnblogs.com/link1988/p/5503733.html
Copyright © 2011-2022 走看看