redis和数据库的同步问题

今天突然想起来这个,就是那么突然,上次项目上用过redis,是一个消息已读未读的问题,由于消息挺多的,如果每次都去查数据库,那岂不是裂开,所以就存缓存了。

现在想想,还是不大行,我看表里已经十万数据了,而且都不怎么用,如果火力全开,可能一天就得1w+的数据。

所以,我认为,更具不同的区域进行分表,然后在存入redis,通过不同的区域key。(没有什么事情是加一层解决不了的,如果有,就再加一层!)

回归正题哈,扯了一会淡(反正也就我自己复习的时候看看博客,无所吊谓!)

既然是同步redis和数据库(以下以修改数据为例子),就有两个情况:

到底是先修改数据库,还是先改redis

我认为,不管是先更新哪一个,都会出现问题(没加锁前提下):

先更新数据库会出现:数据库刚更新完,还没更新redis,就有访问,导致取redis的旧数据。

先更新redis会出现:redis更新成功,一个线程在更新数据库之前去到了redis拿去用了,可是,更新数据库时报错了!这个数据就是错数据,玩球了!

 

最好的方法还是先改数据库,然后删掉缓存,之所以删掉缓存而不是修改缓存,是因为有些缓存不会经常用,所以用到它的时候去除,存入缓存。

所以,直接加锁,(性能降低一些,保证数据安全性),只要我的两个操作没有完,就不能访问。 

还可以用版本号(乐观锁)来解决,redis和数据库两边的版本号是否相同,一旦不相同就不读取还在更新redis缓存。

另外一种就是利用消息队列来解决也就是成了异步更新,一旦更新数据库成功,就向消息队列中发送一条更新消息,消费者拿到后进行更新redis,如果失败就重试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报修系统的流程是怎么样的?有什么好用的售后工单管理系统推荐?

很多制造业公司为了做好售后报修服务,会特意建立一个售后报修系统。我以前有一个做家电的客户,他们公司就是用一个工单系统来处理消费者报修的问题,效果挺不错的。消费者买到的产品有问题的话,直接用微信扫描说明书上面的小程序码…

算法题Python常用内置函数、方法、技巧汇总(其四:数字)

文章目录 数字相关操作整除与求余取整无穷大进制转换 华为OD算法/大厂面试高频题算法练习冲刺训练 数字相关操作 整除与求余 一般而言,我们使用整除运算//和求余运算%来计算两个整数相除的商和余数。 div 10 // 4 mod 10 % 4如果想要同时得到商和余数&#xff…

Ubuntu22.04-安装后Terminal无法调出

参考: Ubuntu20.04 终端打开不了的问题排查_ubuntu终端打不开-CSDN博客 https://blog.csdn.net/u010092716/article/details/130968032 Ubuntu修改locale从而修改语言环境_ubuntu locale-CSDN博客 https://blog.csdn.net/aa1209551258/article/details/81745394 问…

mac使用idea插件 java decomplier反编译jar包

安装插件 这样在本地idea的插件目录下就有 命令 #创建文件夹,用以存放反编译结果jar包 mkdir test#开始反编译文件 java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompil…

【深度学习-目标检测】05 - YOLOv1 论文学习与总结

论文地址:You Only Look Once:Unified, Real-Time Object Detection 论文学习 1. 摘要 YOLO的提出:作者提出了YOLO,这是一种新的目标检测方法。与传统的目标检测方法不同,YOLO将目标检测视为一个回归问题,直接从图像…

Django 访问前端页面一直在转异常:ReferenceError:axios is not defined

访问&#xff1a;http://127.0.0.1:8080/ my.html 一、异常&#xff1a; 二、原因 提示&#xff1a;axios找不到&#xff01;&#xff01; 查看代码<script src"https://unpkg.com/axios/dist/axios.min.js"></script>无法访问到官网 三、解决 Using j…

HTML转Word后打开默认为WEB板式改为页面视图

在html 标签后面添加 <html xmlns:vurn:schemas-microsoft-com:vmlxmlns:ourn:schemas-microsoft-com:office:officexmlns:wurn:schemas-microsoft-com:office:wordxmlns:mhttp://schemas.microsoft.com/office/2004/12/ommlxmlnshttp://www.w3.org/TR/REC-html40> 在…

【Python百宝箱】科技之翼:自动驾驶与无人机前沿技术盘点

驾云翱翔&#xff1a;自动驾驶与无人机技术全景解读 前言 在当今科技飞速发展的时代&#xff0c;自动驾驶和无人机技术正成为引领未来交通和探索领域的关键驱动力。本文将深入探讨与这两个领域密切相关的关键技术和开源工具&#xff0c;为读者提供全面的认识和了解。 【Pyth…

模型量化之AWQ和GPTQ

什么是模型量化 模型量化&#xff08;Model Quantization&#xff09;是一种通过减少模型参数表示的位数来降低模型计算和存储开销的技术。一般来说&#xff0c;模型参数在深度学习模型中以浮点数&#xff08;例如32位浮点数&#xff09;的形式存储&#xff0c;而模型量化可以…

爬虫工作量由小到大的思维转变---<第二十四章 Scrapy的`统计数据`收集stats collection ---12月26日补>

前言: 前两篇是讲的数据诊断分析,还有一篇深挖解决内存泄漏的文章,目前我还没整理汇编出来;但是,想到分析问题的时候,忽然觉得爬虫的数据统计好像也挺重要;于是,心血来潮准备来插一篇这个------让大家对日常scrapy爬的数据,做到心里有数!不必自己去搅破脑汁捣腾日志,敲计算器了…

【R语言爬虫】使用rvest包爬取豆瓣读书Top 250,仅需50行代码(速度挺快)

【R语言爬虫】使用rvest包爬取豆瓣读书Top 250&#xff0c;仅需50行代码&#xff08;速度挺快&#xff09; 爬取目标 书名&#xff0c;作者&#xff0c;出版社&#xff0c;时间&#xff0c;价格 https://book.douban.com/top250?start0 发现需要爬取的内容就在<div cla…

Xshell连接不上本地虚拟机中的linux处理

0、连接不上虚拟机的原因 1、本地电脑未启用VMware网络。 2、连接协议选择错误。 3、防火墙屏蔽IP。 4、虚拟机网络连接模式不是桥接模式。 1、查看本地是否启用VMware的网络 2、连接协议选择 我们在新建会话时&#xff0c;可选的协议有FTP和SFTP两种&#xff0c;其中FTP采用21…

软件测试题常见版

1、python深浅拷贝 浅拷贝&#xff0c;指的是重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;但里面的元素是原对象中各个子对象的引用。深拷贝&#xff0c;是指重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;并且将原对象中的元素&#xff0c;以递归的…

高效资源分配:用CRM系统打造更优销售策略

CRM系统在销售团队中有着重要的应用&#xff0c;但很多销售人员可能对CRM系统存在一些负面的看法&#xff0c;认为它只是一种监管工具&#xff0c;操作空间单调枯燥。那么&#xff0c;如何让销售团队爱上CRM系统呢&#xff1f; 下面我们将分享几个方法&#xff0c;帮助销售经理…

Spring Boot国际化i18n配置指南

Spring Boot国际化i18n配置指南 一、配置 1、yml文件配置 spring:messages:basename: i18n/Messages,i18n/Messages_en_US,i18n/Messages_zh_CNencoding: UTF-8i18n&#xff1a;表示国际化文件的父目录 Messages&#xff1a;默认国际化文件 Messages_en_US&#xff1a;英文文…

关于MybatisPlus自动转化驼峰命名规则配置mapUnderscoreToCamelCase的个人测试和总结

关于MybatisPlus自动转化驼峰命名规则配置mapUnderscoreToCamelCase的个人测试和总结 测试一&#xff1a;没有添加 自动转化的配置&#xff0c;且domain中的属性名称和数据库的字段名称一致测试二&#xff1a;没有添加自动转化配置i&#xff0c;domain属性名userPassword和数据…

装饰模式(单一责任)

Decorator&#xff08;装饰模式&#xff1a;单一责任模式&#xff09; 链接&#xff1a;装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff…

<JavaEE> TCP 的通信机制(三) -- 滑动窗口

目录 TCP的通信机制的核心特性 四、滑动窗口 1&#xff09;什么是滑动窗口&#xff1f; 2&#xff09;滑动窗口的作用是什么&#xff1f; 3&#xff09;批量传输出现丢包如何处理&#xff1f; 1> 接收端ACK丢包 2> 发送端数据包丢包 4&#xff09;适用性 TCP的通…

【EasyExcel】使用技巧

文章目录 前言一、使excel中的公式生效二、待更新1.待更新 总结 前言 【EasyExcel】的使用技巧&#xff0c;随时间推移进行更新&#xff1a; 2023-12-26——【使excel中的公式生效】 提示&#xff1a;以下是本篇文章正文内容 一、使excel中的公式生效 ExcelWriter excelWrite…

为什么深度学习神经网络可以学习任何东西

下图你所看到的&#xff0c;是著名的曼德尔布罗特集&#xff0c;我们可以见证这个集合呈现出的复杂形态&#xff1a; 要理解神经网络如何学习曼德尔布罗特集&#xff0c;我们首先需要从最基础的数学概念讲起&#xff1a;什么是函数&#xff1f;函数本质上是一个将输入转化为输出…