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中缓存的数据与数据库数据一致性的方案

方式1:数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求,都由redis处理 要求强一致实时性的读请求,由数据库处理 写请求有2种处理...

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

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

redis缓存机制 保证数据一致性问题

在redis设置失效时间后,如果需要在未失效时保证数据一致就需要在更新数据库的同时更新redis,若是在放入redis同时需要存入mongodb等非关系型数据库,可以将消息放入一些消息机制,这样以保证...
  • jkalq
  • jkalq
  • 2015年03月06日 16:16
  • 2915

redis与Mysql的数据一致性

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

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

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

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

方式1:数据库保存数据,redis不persist redis启动后,从数据库加载数据 不要求强一致实时性的读请求,都由redis处理 要求强一致实时性的读请求,由数据库处理 写请求有2种处理...

Redis和MySQL的结合方案

1,程序同时写Redis和MySQL,读Redis 2,程序写MySQL, 使用Gearman调用MySQL的UDF,完成对Redis的写,读Redis 3,程序写MySQL, 解析binlog,数据...

Redis与Mysql结合

Redis与MySQL的结合         目前大部分互联网公司使用MySQL作为数据的主要持久化存储,那么如何让Redis与MySQL很好的结合在一起呢?将MySQL作为主库,Redis作为高速...

Redis+MySQL冷热数据交换

场景:某网站需要对其项目做一个投票系统,投票项目上线后一小时之内预计有100万用户进行投票,希望用户投票完就能看到实时的投票情况 这个场景可以使用redis+mysql冷热数据交换来解决。何为冷热数据...

初学Redis(3)——用Redis作为Mysql数据库的缓存

把Mysql结果集缓存到Redis的字符串或哈希结构中以后,我们面临一个新的问题,即如何为这些字符串或哈希命名,也就是如何确定它们的键。因为这些数据结构所对应的行都属于某个结果集,假如可以找到一种唯一...
  • qtyl1988
  • qtyl1988
  • 2014年09月24日 19:06
  • 44948
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql保障数据一致性:redis与mysql数据同步(二)
举报原因:
原因补充:

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