添加缓存的相关策略以及缓存的主动更新

news2024/9/20 17:32:22

目录

添加缓存

代码实现

主动更新缓存

 先删缓存在操作数据库

数据一致

 数据不一致

先操作数据库在删除缓存

 数据一致

数据不一致

总结


添加缓存

代码实现

public Shop queryWithPassThtough(Long id){
//先从redis中查询缓存
String object = stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY + id);
//如果有直接返回
if(object != null){
    //转成Java对象
    Shop bean = JSONUtil.toBean(object, Shop.class);
    return bean;
}
//如果没有,查询数据库
Shop shop = this.getById(id);
//如果数据库中没有,报错
if (shop == null){
    return Result.fail("没有该店铺");
    return null;
}
//如果有,写入redis
stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id,JSONUtil.toJsonStr(shop),30, TimeUnit.MINUTES);
return shop;


}

主动更新缓存

 先删缓存在操作数据库

数据一致

 假设线程A先删除缓存然后操作数据库,此时线程B来查询缓存没有命中,然后从数据库查询到数据后写入缓存此时缓存与数据库数据一致

 数据不一致

假设A线程先删除缓存,此时线程B来查询缓存未命中,就会查询数据库(旧数据)并写入缓存,此时数据库与缓存的数据不一致

先操作数据库在删除缓存

 数据一致

数据不一致

总结

不论是先删除缓存还是先操作数据库,都要确保更新数据库的操作在查询缓存之前,这样才能保证数据一致

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

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

相关文章

《零散知识点 · SpringBoot Starter》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

开放式耳机音质上不如入耳式耳机?高性价比开放式耳机推荐大赏

这可不一定! 开放式耳机在音质上并不一定就比传统的入耳式耳机差。 首先,音质的好坏不能仅仅根据耳机的类型来判断。开放式耳机在声音的开放性和自然度方面往往具有优势。它们能够提供更宽广的音场,让声音有一种自然扩散的感觉,使…

『 Linux 』线程同步问题与条件变量

文章目录 同步问题条件变量条件变量的使用条件变量的条件检查与线程唤醒生产者-消费者模型 同步问题 同步问题是保证数据安全的情况下,使多线程在访问同一资源时具有一定顺序性; #define NUM 5int g_val 700;class threadData {public:threadData(const int number, pthread_…

linux常使用的命令

关机命令 shutdown halt poweroff reboot grep 选项 参数 -l 显示所有包含关键字的文件名 -n 在匹配之前加上行号 -c 只显示匹配的行数 -v 显示不匹配的行 管道符 “|” 左边的输出作为右边的输入 例如:我们找个文件包含abc 但是不含有def的文件 grep …

Adobe Acrobat DC 2021版安装教程【超简单、超详细】

Adobe Acrobat DC 是 Adobe 提供的一款专业 PDF 解决方案,具有许多强大的功能,可以满足各种文档处理需求。 注意事项:①下载与激活过程中一定要关闭杀毒软件 ②提供的所有软件都是永久版的 ③软件仅供学习下载使用,不可用于商业用…

C++ 右值 左值引用

一.什么是左值引用 右值引用 1.左值引用 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋值。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左…

环境如何搭建部署Nacos

这里我使用的是Centos7, Nacos 依赖 Java环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用 ## 1、下载安装JDK wget https://download.oracle.com/java/17/latest/jdk-17_linux-x6…

知识文库杂志知识文库杂志社知识文库编辑部2024年第12期目录

文艺理论 现代高校书院对中国传统书院学术精神的汲取与转化 李奥楠;时新洁; 1-4 个案工作介入高中美术艺考生及家长心理调适的应用研究 魏星; 5-8《知识文库》投稿:cn7kantougao163.com 中华优秀传统文化视角下高校美育课程实践教学 李丛丛; 9-12 基…

Pytorch GPU环境搭建-博客导航

这里写目录标题 安装安装VS(CUDA需要VS)安装CUDA安装CUDNN创建Pytorch GPU虚拟环境 测试疑难杂症解决链接搭建VGG分类网络并用CUDA训练使用CUDA加速推理分类网络C#使用ONNXruntime-gpu推理 安装 安装VS(CUDA需要VS) 2017,2019,2022都可 安装CUDA Cud…

山东润馨教育专家团队多次举办各种扶贫及公益讲座

一、山东润馨教育专家鲁书婉老师举办了以“发掘孩子的天赋潜能”为主题的公益讲座 在这个充满温情与希望的春日,3月16日,山东润馨教育专家团队带着满满的爱心与智慧,踏入了德州学院附属第一实验小学联合滨河社区,成功举办了一场以…

如何恢复硬盘里删除的数据?硬盘数据恢复真的可靠吗?2024最新解答!

在日常的计算机使用中,我们时常会不小心删除硬盘中的重要数据,这时候,数据恢复就显得尤为重要。本文将介绍几种恢复硬盘里删除数据的方法,并探讨硬盘数据恢复的可靠性,提供2024年的最新解答。 一、什么是电脑硬盘&…

【Linux】进程创建进程终止进程等待

目录 一、进程创建1.1 写时拷贝1.2 frok的常规用法1.3 fork调用失败的原因 二、进程终止2.1 进程退出码2.2 进程退出方式2.2.1 exit函数的使用2.2.2 _exit函数的使用2.2.3 exit函数与_exit函数的区别 2.3 进程信号 三、进程等待3.1 进程等待的必要性3.2 进程等待的方式3.2.1 wa…

从零开始的MicroPython(一) 软件安装及环境搭建

文章目录 MicroPython简介下载安装 ESP32(NodeMCU-32S)简介引脚注意事项 CH340下载安装 Thonny IDE下载 Python简介下载环境配置 MicroPython 简介 ​ MicroPython 是 Python 3 编程语言的精简高效的实现 其中包括 Python 标准库的一小部分,并且是经过优化&#x…

达梦数据库系列—40.执行计划

目录 优化器 执行计划 操作符 执行过程 优化器 查询优化器通过分析可用的执行方式和查询所涉及的对象统计信息来生成最优的执行计划。此外,如果存在 HINT 优化提示,优化器还需要考虑优化提示的因素。 查询优化器的处理过程包括: 1.优化…

手摸手教你撕碎西门子S7通讯协议14--开发自己的通讯库读数据

1、S7通讯回顾 - (1)建立TCP连接 Socket.Connect- - (2)发送访问请求 COTP- - (3)交换通信信息 Setup Communication- - (4)执行相关操作 读、写、PLC启停、时间…

【Android】DrawerLayout+NavigationView实现侧滑菜单页面

【Android】DrawerLayoutNavigationView实现侧滑菜单页面 在 Android 开发中,侧滑菜单是一个非常常见的用户界面模式,它能够在屏幕的一侧显示一个导航菜单,允许用户通过滑动手势或点击按钮来访问不同的应用功能。本文将介绍如何使用 DrawerL…

网页UI设计工具全攻略:九大精选

如果担心不知道如何进行网站 UI 设计、设计网站和编辑网页技术程序,很多人会选择快速方便的 Wix 建设。然而,如果你想建立一个最合适的网站,使用一个功能强大、资源丰富的网站 UI 设计工具仍然是您的最佳选择。网站设计中的 UI 设计不同于一般…

你是否知道Vue的data两种不同定义区别呢?

在做vue项目的时候,虽然vue3出来了一段时间了,vue2已经官方宣布不再维护了,然而我们有些旧项目原来是用的vue2的,那么用了那么久的vue2,不知道你是否有注意到,vue2我们往往会在根文件定义了一个对象形式的d…

类似redmine的项目管理系统有哪些?10款软件测评

国内外主流的10款类似redmine项目管理系统对比:PingCode、Worktile、TAPD、OpenProj、禅道(ZenTao)、Teambition、JIRA、Asana、Basecamp、Wrike。 在项目管理领域,选择一个既能满足需求又易于操作的工具是每个团队都面临的挑战。…