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】。

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

  • 相关阅读:
    hdu1865 1sting (递归+大数加法)
    hau1021 Fibonacci Again(递归)
    hdu2553 N皇后问题(dfs+回溯)
    BZOJ2342 [Shoi2011]双倍回文 【manacher】
    Manacher算法学习 【马拉车】
    BZOJ2743 [HEOI2012]采花 【离线 + 树状数组】
    BZOJ1296 [SCOI2009]粉刷匠 【dp】
    BZOJ1086 [SCOI2005]王室联邦 【dfs + 贪心】
    BZOJ1565 [NOI2009]植物大战僵尸 【最大权闭合子图 + tarjan缩点(或拓扑)】
    BZOJ2157 旅游 【树剖 或 LCT】
  • 原文地址:https://www.cnblogs.com/linjiqin/p/3569011.html
Copyright © 2011-2022 走看看