前言:所谓的redis数据一致性即当进行修改或者保存、删除之后,redis中的数据也应该进行相应变化,不然用户再次查询的时候很可能查询出已经删除过的脏数据。

一、缓存一致的必要性

还是接上篇来说,我们已经解决了redis缓存穿透的问题(简单解决方案,可以再次优化),但是使用redis的时候缓存一致性的问题我们也需要着重考虑,例如:保存了一个新用户之后,就应该同时在redis缓存中也插入该条数据,更新了某条数据在缓存中也应该同步更新,而redis默认的做法是:当你不去设置的时候redis中存放的一值是你之前存放的数据,只有在重启服务器的时候数据才会同步,显然这是非常不可取的,如果是这样的话岂不是每时每刻都要重启服务器,那将是多么大的灾难!

二、业务场景

这里我只说一个场景吧,其他场景都是一样的处理办法,场景为:假设我们将用户数据放入到redis中,此时有新用户注册,在数据库中会插入一条新数据,与此同时要在redis中也插入该条数据,以便于下次查询的时候显示最新数据。

我们先来看一下默认不使用任何处理的情况下redis是否会为我们做一致性操作,现在我的测试数据库中有18条用户数据,此时我们启动系统后注册插入第19条数据后看下redis中是否有19条。

经过注册之后我现在给数据库中插入了第19条数据

接着我们还是使用上篇提到过的查询缓存的方法来获取下所有信息,我们直接来看第最后一条,可以看到最后是润青而不是十九,所以redis默认是没有替我们做缓存一致操作的。

三、缓存一致性实现(方案1)

其实,要想实现一致性很简单,当我们在进行插入操作之后,我们把该条数据取出来同时保存到redis缓存中去,这样再次查询缓存的时候我们也可以看到新的数据,代码如下:

需要注意的是:我这里直接是调用JPA的findAll(),其实更好的做法是根据id去更新刚插入的那一条,这样效率才高,这里只是演示如何实现,接着再来注册一条新数据,看看是否可以在缓存中同时看到:新插入的数据id为29,我们来看下缓存是否存在该条新数据

四、redis缓存一致性实现(方案2)

定期清除redis中的数据,例如设置一个定时任务,每当一个小时的时候就会清除redis中的数据,也就是让redis中的数据失效,然后再次保存、删除的时候之前的 redis中的数据已经不存在,所以相当于是将数据重新设置到redis中去,所以可以保证数据的一致性。

redis数据一致性相关推荐

  1. redis数据一致性之延时双删详解

    在使用redis时,需要保持redis和数据库数据的一致性,最流行的解决方案之一就是延时双删策略,今天我们就来详细刨析一下 注意:要知道经常修改的数据表不适合使用redis,因为双删策略执行的结果是把 ...

  2. redis数据一致性串行化方案_若何保障mysql和redis之间的数据一致性?(转发)

    在高并发的营业场景下,数据库大多数情形都是用户并发接见最微弱的环节.以是,就需要使用redis做一个缓冲操作,让请求先接见到redis,而不是直接接见Mysql等数据库.这样可以大大缓解数据库的压力. ...

  3. 使用队列实现redis数据一致性的思考

    使用队列保证redis数据的一致性 简介 分析及制定解决方案 使用队列的详细方案 方案代码 一些技术要点 一些局限性 总结 简介 在使用redis的时候,前面介绍了,由于操作数据库和操作redis缓存 ...

  4. 如何保证MySQL和Redis的数据一致性?

    " 今天给大家剖析一下工作中常见的 MySQL 和 Redis 数据一致性问题. 图片来自 Pexels 什么是数据的一致性 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据 ...

  5. 面试官:谈谈Redis缓存和MySQL数据一致性问题

    前言 对于Web来说,用户量和访问量增一定程度上推动项目技术和架构的更迭和进步.可能会有以下的一些状况: 页面并发量和访问量并不多,MySQL足以支撑自己逻辑业务的发展.那么其实可以不加缓存.最多对静 ...

  6. 【Redis】Redis分布式集群几点说道

    Redis数据量日益增大,使用的公司越来越多,不仅用于做缓存,同时趋向于存储这一块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片 ...

  7. Redis与数据库缓存一致性问题

    一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...

  8. redis的延迟双删策略总结

    1.什么是延迟双删? 延迟双删策略是分布式系统中数据库存储和缓存数据保持一致性的常用策略,但它不是强一致.其实不管哪种方案,都避免不了Redis存在脏数据的问题,只能减轻这个问题,要想彻底解决,得要用 ...

  9. Redis(六) 数据库和缓存的一致性问题

    文章目录 一 先上结论 二 四种常用的缓存更新策略: 三 写操作的缓存更新策略分析 一 双更策略: 二 删除策略: 三 延时双删策略: 四 失败重试 同步重试: 异步重试: 借助消息队列: 订阅数据库 ...

  10. 如何保持mysql和redis中数据的一致性?

    Redis 的数据一致性方案分析 一般的业务场景都是读多写少的,当客户端的请求太多,对数据库的压力越来越大,引入缓存来降低数据库的压力是必然选择,目前业内主流的选择基本是使用 Redis 作为数据库的 ...

最新文章

  1. intent.putExtra()方法参数详解
  2. MyEclipse10整合Axis2插件
  3. 以mips为单位衡量微型计算机的性能,2016计算机二级《MS Office》选择题专项训练...
  4. go连接mysql集群_什么是MySQL集群-Go语言中文社区
  5. Exynos4412 文件系统制作(三)—— 文件系统移植
  6. 实例37:python
  7. 【ElasticSearch】Es 源码之 Netty4HttpServerTransport 源码解读
  8. 调用OpenCVSharp进行拍照
  9. python编程入门教学视频-Python编程入门电子书及视频教程-非常详细『强烈推荐』...
  10. 微信运动计步器 php,微信修改步数(卡密版)v1.2.1 PHP程序
  11. python nlpir_Python 中文分词 NLPIR 快速搭建
  12. 大数据、云计算和物联网的关系
  13. 小米手机,xxx正在删除小米账户上的联系人
  14. 又到年末“团建”!某企业员工吐槽:这真是一场噩梦……
  15. Smss.exe 进程分析--NT 源码--当机方法
  16. Android平台基于asmack实现XMPP协议中的PubSub机制
  17. csgo进创意工坊显示专用服务器,国服CSGO加载Steam创意工坊的图
  18. DBPwAudit -数据库密码破解工具的使用
  19. 用原生Node实现一个静态web服务器
  20. 谷歌翻译代码-google translate code

热门文章

  1. Servlet(HttpServletResponse响应对象)
  2. JSON日期时间的处理
  3. 安卓手机如何打开开发者模式?
  4. python for maya教程_Python for Maya Fundamentals
  5. 论需求分析方法及应用--系统分析师
  6. Hello World with Ant
  7. win10设置计算机关机时间,Win10怎么设置自动关机时间_Win10设置自动关机教程-192路由网...
  8. 程序员该如何对付日常小病小痛?
  9. mysql怎么跨库查询_在MySQL中怎样进行跨库查询?
  10. 台式电脑怎么组装步骤_怎么组装台式电脑 台式电脑组装方法