• 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 复制代码
  • 相关阅读:
    环境部署:Linux下查看JDK安装路径
    环境部署(一):Linux下安装JDK
    linux常见命令
    设计用例
    测试用例的优先级
    快速幂和快速乘
    docker-compose安装
    jmeter通过命令生成自动测试报告
    jmeter环境变量配置
    java将毫秒转化为当前时间
  • 原文地址:https://www.cnblogs.com/link1988/p/5503733.html
Copyright © 2020-2023  润新知