mysql保障数据一致性:redis与mysql数据同步(二)

转载 2015年11月17日 16:12:57

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


<span style="white-space:pre">	</span>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()));  
            //  redisService.delete("Login:"+String.valueOf(login.getId()));  
                //redisService.decr(tbname);  
            }  
        System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));  
        System.out.println(redisService.get(tbname));  


原文:http://blog.csdn.net/hpb21/article/details/7905352

redis与Mysql的数据一致性

为了减少db的读压力,加快读速度,系统使用cache做缓存,会引起cache一致性问题。因为db会有事务性导致回滚,而cache无法回滚,会导致脏数据。 一般情况下,我们会在保存数据时,先穿透保存到...
  • ly262173911
  • ly262173911
  • 2017年07月14日 18:16
  • 1808

分布式环境下MySQL和Redis一致性

两种方案: 1、redis作为数据库,读写,更新操作异步发mq消息处理更新mysql 2、数据库更新操作发mq消息处理redis,从redis读数据...
  • meifage
  • meifage
  • 2017年05月11日 23:41
  • 580

redis中缓存的数据与数据库数据一致性的方案

方式1:数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求,都由redis处理 要求强一致实时性的读请求,由数据库处理 写请求有2种处理...
  • feicongcong
  • feicongcong
  • 2017年01月08日 13:06
  • 11876

MySQL和Redis 数据同步解决方案整理

现在在中集E栈工作,最近在做一个Redis箱格信息数据同步到数据库Mysql的功能。 自己想了想,也有大概方案。 1.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费。...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年09月21日 19:19
  • 12698

将数据库数据放到redis中并保持数据一致性方案

1、查询时先查询缓存(redis),如果查询不到,查询数据库,并将会员唯一标识(会员编号),放到redis队列中(list) 2、启动一个job从redis队列中读取会员唯一标识,并判断会员编号作为...
  • page_qiu
  • page_qiu
  • 2015年09月29日 09:52
  • 3084

Redis系列~Mysql数据同步解决方案整理(二十一)

最近在做一个Redis数据同步到数据库MySQL的功能。 自己想了想,也有大概方案。 1.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费。 2.后台定时任务,定时...
  • hemin1003
  • hemin1003
  • 2016年11月03日 17:15
  • 6049

mysql保障数据一致性:redis与mysql数据同步(二)

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在red...
  • pingyan158
  • pingyan158
  • 2016年03月21日 14:46
  • 1550

redis与mysql数据同步

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在red...
  • hpb21
  • hpb21
  • 2012年08月24日 19:54
  • 52415

redis系列之数据库与缓存数据一致性解决方案

redis系列之数据库与缓存数据一致性解决方案 数据库与缓存读写模式策略 写完数据库后是否需要马上更新缓存还是直接删除缓存? (1)、如果写数据库的值与更新到缓存值是一样的,不需要经过任何的计算,可以...
  • simba_1986
  • simba_1986
  • 2017年09月03日 17:09
  • 3331

redis中缓存的数据与数据库数据一致性的方案(好)

方式1:数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求,都由redis处理 要求强一致实时性的读请求,由数据库处理 写请求有2种处理...
  • AlbertFly
  • AlbertFly
  • 2017年01月09日 15:07
  • 2749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql保障数据一致性:redis与mysql数据同步(二)
举报原因:
原因补充:

(最多只允许输入30个字)