当前位置: 首页 > news >正文

redis 如何保证数据同步(数据变化时)

redis 如何保证数据同步(数据变化时)

思路

1.新增、删除和修改都先对数据库进行操作,这时数据库的数据将域缓存中数据不同。

2.数据库进行变动后,返回结果,根据返回的结果判断数据库操作是否成功。

3.如果数据库操作成功,取出数据库中的数据,放入缓存中的指定键值对中。

4.否则返回缓存中的数据,显示到页面上。

测试

删除操作

  

//删除数据库数据,并且同步到缓存@RequestMapping("DeleteData/{id}")public List<Article> DeleteData(@PathVariable("id") int id) {//1.需要先删除数据库中的文件int dta = articleService.deleteData(id);//2.如果删除成功,则取出数据库数据放进缓存中,放回缓存中的新数据if (dta > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果删除不成功,则直接返回缓存中的数据return (List<Article>) redisTemplate.opsForValue().get("articleData");}

新增操作

//新增数据,并同步到缓存@RequestMapping("interData")public List<Article> interData() {//1.新增数据到数据库int i = articleService.interData();//2.如果成功,则将其放入if (i > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果不成功,就返回缓存的return (List<Article>) redisTemplate.opsForValue().get("articleData");}

修改操作

//修改数据,并同步到缓存@RequestMapping("updateData/{id}")public List<Article> updateData(@PathVariable("id")int id) {//1.新增数据到数据库int i = articleService.updateData(id);//2.如果成功,则将其放入if (i > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果不成功,就返回缓存的return (List<Article>) redisTemplate.opsForValue().get("articleData");}

相关文章:

redis 如何保证数据同步(数据变化时)

redis 如何保证数据同步&#xff08;数据变化时&#xff09; 思路 1.新增、删除和修改都先对数据库进行操作&#xff0c;这时数据库的数据将域缓存中数据不同。 2.数据库进行变动后&#xff0c;返回结果&#xff0c;根据返回的结果判断数据库操作是否成功。 3.如果数据库操…...

Ubuntu18.04桌面版设置静态IP地址

引用: Ubuntu配置静态IP_ubuntu配置静态ip地址-CSDN博客 正文 默认Unbuntu 18.04 Desktop桌面版使用 netplan 管理网卡网络地址。使用Unbuntu 18.04 桌面版配置&#xff0c;可以通过桌面上的设置图标配置网卡的静态IP地址。 点击桌面右上角下拉框&#xff0c;点击“设置”按…...

Aztec的客户端证明

1. 引言 隐私保护 zk-rollup 的证明生成与通用 zk-rollup 的证明生成有很大不同。原因是给定交易中存在特定数据&#xff08;由私有函数处理&#xff09;&#xff0c;我们希望保持完全私有。在本文中&#xff0c;我们探讨了用于证明私有函数正确执行的客户端证明生成&#xff…...

面试官:小伙子知道synchronized的优化过程吗?我:嘚吧嘚吧嘚,面试官:出去!

写在开头 面试官&#xff1a;小伙子&#xff0c;多线程中锁用过吗&#xff1f; 我&#xff1a;那是自然&#xff01; 面试官&#xff1a;那你知道synchronized的优化吗&#xff1f; 我&#xff1a;synchronized作为重锁&#xff0c;开销大&#xff0c;在早期不被推荐使用&…...

100天精通风控建模(原理+Python实现)——第23天:风控建模中的贝叶斯优化是什么?怎么实现?

在当今风险多变的环境下,风控建模已经成为金融机构、企业等组织的核心工作之一。在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中的召回率是什么,怎么实现。并提供风控建模原理和Python实现文章清单。    之前已经阐述了100天精通…...

Http 超文本传输协议基本概念学习摘录

目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字…...

模拟-算法

文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路&#xff1a; 从前往后遍历整个字符串&#xff0c;找到问号之后&#xff0c;就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…...

深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…...

Unbuntu20.04 git push和pull相关问题

文章目录 Unbuntu20.04 git push和pull使用&#xff11;&#xff0e;下载[Git工具包](https://git-scm.com/downloads)&#xff12;&#xff0e;建立本地仓库&#xff13;&#xff0e;将本地仓库与github远程仓库关联&#xff14;&#xff0e;将本地仓库文件上传到github远程仓…...

hive SQL 移位、运算符、REGEXP正则等常用函数

orderflag & shiftleft(1,14) shiftleft(1,14) SQL中使用的运算符号详解_sql中各种符号-CSDN博客 Hive函数_hive shift-CSDN博客 &#xff08;内建函数&#xff08;类型排序&#xff09;_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心&#xff09;...

33-Java服务定位器模式 (Service Locator Pattern)

Java服务定位器模式 实现范例 服务定位器模式&#xff08;Service Locator Pattern&#xff09;用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高&#xff0c;服务定位器模式充分利用了缓存技术在首次请求某个服务时&#xff0c;服务定位器在 JNDI…...

前端小卡片:vue3路由是什么,有什么作用,该如何配置?

在 Vue 3 中&#xff0c;路由的处理使用了 Vue Router&#xff0c;它是官方提供的路由管理器。Vue Router 用于实现单页应用中的路由功能&#xff0c;通过将不同的 URL 映射到对应的组件&#xff0c;实现页面之间的切换和导航。 Vue Router 的作用包括&#xff1a; 实现页面之…...

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…...

说说webpack中常见的Loader?解决了什么问题?

文章目录 一、是什么配置方式 二、特性三、常见的loadercss-loaderstyle-loaderless-loaderraw-loaderfile-loaderurl-loader 参考文献 一、是什么 loader 用于对模块的"源代码"进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情…...

Django 铺垫

【一】基础知识点 【1】web框架的本质 Web框架本质上可以看成是一个功能强大的socket服务端用户的浏览器可以看成是拥有可视化界面的socket客服端两种通过网络请求实现数据交互 【2】浏览器发送请求 &#xff08;1&#xff09;HTTP协议 HTTP协议是超文本传输协议&#xff…...

浅谈C++的继承与多态(静态绑定、动态绑定和虚函数等)

今天我们来谈谈C的继承与多态&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;本篇的关键内容如下&#xff1a; 继承的本质及其原理派生类的构造和析构过程重载、隐藏和覆盖类的向下或向上转型静态绑定与动态绑定虚函数对类的影响虚析构函数 下面&#xff0c;我们将对这…...

【无人机综合考试题】

1.请选择出哪一个功能选项&#xff0c;在手动遥控飞行时&#xff0c;可以改变各通道的操作灵敏度? 行程比例在手动遥控飞行时&#xff0c;可以改变各通道的操作灵敏度 用于起降的遥控器中 THR、ELE 通道分别控制多旋翼无人机的什么运动? AIL(左、右移动)RUD(左、右水平旋转…...

JS精度计算的几种解决方法,1、转换成整数计算后再转换成小数,2、toFixed,3、math.js,4、bignumber.js,5、big.js

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、转换成整数计算后再转换成小数二、toFixed三、math.js四、bignumber.js五、big.js总结 前言 原始计算 let aNum 6.6 0.3;let bNum 6.6 - 0.2;let cNum 6.6 * 0.3;let dNum 6.6 / 0.2;console.log(…...

v77.递归

理解&#xff1a; 函数直接或者间接地调用自身&#xff1b;并且有边界条件。 1&#xff1a; #include <stdio.h> int main() {int result fun(3);printf("%d",result);return 0 ; } int fun(int num) {if(num 1)return num;return num fun(num-1); }思路…...

Spring Cloud微服务功能及其组件详细讲解

Spring Cloud微服务功能及其组件详细讲解 文章目录 Spring Cloud微服务功能及其组件详细讲解前言&#xff1a;什么是微服务&#xff1f;一、Spring Cloud原理简述二、核心组件1、服务发现——Nacos/Eureka/Consul1&#xff09;Nacos服务发现2&#xff09;Eureka服务发现3&#…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...