美文网首页透视经典谷穗文刊简书:百家争鸣
Redis和MySql数据同步以及Redis使用场景

Redis和MySql数据同步以及Redis使用场景

作者: 小石读史 | 来源:发表于2019-11-30 11:21 被阅读0次

    Redis和MySql的数据同步是我们开发中经常遇到的问题,怎么实现Redis和MySql之间的数据同步?

    实际开发中我们经常采用如下方式实现Mysql和Redis数据同步:

    当我们对MySQL数据库进行进行增删改的时候,我们在增删改的service层将缓存中的数据清除,用户请求过来的时候会先去缓存中查询数据,如果缓存中没有要查询的数据则去数据库中查询,然后将查询的结果放入缓存中并设置一个有效期,这个时候缓存中的数据就是最新的数据。

    Redis使用场景:

    1、热点数据的缓存

    因为Redis访问速度块、支持的数据类型比较丰富,所以Redis很适合用来存储热点数据,另外我们可以设置数据过期时间,及时的更新缓存数据,这个使用场景非常的常见。

    2、计数器

    因为Redis的incrby命令可以实现原子性的操作,所以可以在高并发的秒杀活动中通过Redis的incrby命令控制库存、也可以它来控制接口的访问次数。

    3、定时器

    因为redis可以设置数据的有效期,我们可以把一些有时效性的数据放入redis.例如验证设置过期时间等

    4、分布式锁

    多个系统在Redis中set同一个key,只有key不存在的时候,才能设置成功,并且该key会对应其中一个系统的唯一标识,当该系统访问资源结束后,将key删除,则达到了释放锁的目的。在实现的时候要注意的几个关键点:

    1、锁信息必须是会过期超时的,不能让一个线程长期占有一个锁而导致死锁;

    2、同一时刻只能有一个线程获取到锁。

    几个要用到的redis命令:

    setnx(key, value):“set if not exits”,若该key-value不存在,则成功加入缓存并且返回1,否则返回0。

    get(key):获得key对应的value值,若不存在则返回nil。

    getset(key, value):先获取key对应的value值,若不存在则返回nil,然后将旧的value更新为新的value。

    expire(key, seconds):设置key-value的有效期为seconds秒。

    相关文章

      网友评论

        本文标题:Redis和MySql数据同步以及Redis使用场景

        本文链接:https://www.haomeiwen.com/subject/ndxowctx.html