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

    应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。

    String tbname = "login";
            
    //获取mysql表主键值--redis启动时
    long id = MySQL.getID(tbname);
    //设置redis主键值--redis启动时
    redisService.set(tbname, String.valueOf(id));
    
    System.out.println(id);
    long l = redisService.incr(tbname);
    System.out.println(l);
    Login login = new Login();
    login.setId(l);
    login.setName("redis");
    redisService.hmset(String.valueOf(login.getId()), login);
    
    boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')");
    /**
     * 
     * 队列处理器更新mysql失败:
     * 
     * 清除缓存数据,同时主键值自减
     */
    if (!b){
        redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
    }
    System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
    System.out.println(redisService.get(tbname));

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Ruthless】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    python全栈开发_day48_bootstrap
    python全栈开发_day47_js,jQuery
    python全栈开发_day46_html文本标签
    抽象集合
    ViewState的用法
    sql(join中on与where区别)
    微软的技术文档链接地址
    微软的帮助文档,详细的介绍VS开发工具的使用
    [摘录]解决C# DateTime去掉时分秒几种方法
    验证(摘录)
  • 原文地址:https://www.cnblogs.com/linjiqin/p/3569011.html
Copyright © 2011-2022 走看看