Redis框架(六):大众点评项目 缓存更新策略 实现双写

news2024/11/17 19:40:49

大众点评项目 众点评项目 缓存更新策略 实现双写

  • 需求:缓存更新策略
  • 业务实现
  • 特殊情况展示

SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis实战项目 大众点评
主要依照以下几个原则

  1. 基础+实战的Demo和Coding上传到我的代码仓库
  2. 在原有基础上加入一些设计模式,stream+lamdba等新的糖
  3. 通过DeBug调试,进入组件源码去分析底层运行的规则和设计模式

代码会同步在我的gitee中去,觉得不错的同学记得一键三连求关注,感谢:
Redis优化-链接: RedisProject

需求:缓存更新策略

上一章节我们通过Redis可以提高响应速度,但相应的问题来了
数据如果更改,DB和缓存应该如何维护相互之间的关系那?
如何保证数据的一致性那?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们会通过设计一个更新策略最大限度保证数据的可靠和高效;
这里就是用到了旁路缓存,先更新数据库,再删除数据,如果出现特殊情况,可以通过设定过期时间来进行维护;

业务实现

上一节,我们的商品查询已经通过Redis来实现,现在就需要考虑下更新策略了

原有业务

    /**
     * 更新商铺信息
     * @param shop 商铺数据
     * @return 无
     */
    @PutMapping
    public Result updateShop(@RequestBody Shop shop) {
        // 写入数据库
//        shopService.updateById(shop);
//        return Result.ok();
        return shopService.updateShopById(shop);
    }

更新业务如下:
业务思想:

  1. 通过商品id查询商品,缓存需要加入过期时间,业务依旧
  2. 如果更新商品id,就需要先修改数据库,在删除缓存
    @Override
    @Transactional
    public Result updateShopById(Shop shop) {
        Long id = shop.getId();

        if (id == null) {
            return Result.fail("不存在当前类型");
        }

        //先存放到db,再删redis
        updateById(shop);
        stringRedisTemplate.delete(RedisConstants.CACHE_SHOP_KEY + id);
        log.debug(stringRedisTemplate.opsForValue().get("CACHE_SHOP_KEY: " + RedisConstants.CACHE_SHOP_KEY));


        return Result.ok();
    }

我们通过PostMan来进行测试,提交put请求

在这里插入图片描述
查看日志信息
在这里插入图片描述
查看数据库
在这里插入图片描述

查看缓存

在这里插入图片描述

特殊情况展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

GIS空间分析之密度分析

密度分析结果可以显示出点要素或线要素较为集中的地方。例如,每个城镇都可能有一个点值,这个点值表示该镇的人口总数,但是您想更多地了解人口随地区的分布情况。由于每个城镇内并非所有人都住在聚居点上,通过计算密度,…

网络安全学习路线,入门到入坟,史上最全网络安全学习路线整理

很多小伙伴在网上搜索网络安全时,会出来网络安全工程师这样一个职位,它的范围很广,只要是与网络安全挂钩的技术人员都算网络安全工程师,一些小伙伴就有疑问了,网络安全现在真的很火吗? 那么寒哥就带大家看…

美港探案:不理想的理想Q3,能否守得云开见月明?

12月9日,港股盘后理想汽车发布了2022年第三季度业绩报告。探员就迫不及待的去理想的官网上看了这份Q3业绩报告,整体数据很不理想,但是也都在探员的预料之内,但是探员对于理想依然是充满了热爱,在电动三傻中对理想也是情…

优美的曲线-turtlesim

从开环到闭环的旅程-CoCube 优美的曲线-译 2022年所公开博客案例所有项目,都在2020年之前完成,并且全部经过3轮以上测试。 当完美实现闭环之后,画曲线那就可以随心所欲啦。 想画什么,就能画什么。 核心代码: float …

DubboSPI使用以及使用方式源码解读

DubboSPI流程图 为什么Dubbo要自己实现SPI java spi 会一次性实例化扩展点所有实现,机制并不能根据获取自己想要的类 获取一个类的实现对象 javaSPI 具有局限性: 1、没法给实现类起别名 2、没法实现包装类。类似AOP的原理 3、没法实现自动注入 4、没法…

[附源码]Python计算机毕业设计SSM基于大数据的汽车流量监控(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ESP32 ESP-IDF + LVGL + SquareLine Studio 设计 UI 界面

陈拓 2022/12/10-2022/12/12 1. 概述 关于SquareLine Studio,乐鑫官方的ESP技术文章有介绍:在 ESP 开发板上开发 UI 不再复杂 - 知乎如果您尝试过在没有图形库的情况下开发 UI,那么您一定知道这有多困难。幸运的是,由乐鑫芯片驱动…

线性代数---第六章---二次型

1二次型方的系数为主对角线上的元素 我起码要会如何根据二次型写矩阵A 2规范形是系数为1,-1,0的标准型 3二次型的正惯性指数和负惯性指数 4任一个n阶实对称阵,必然既相似又合同于对角阵 5用配方法化二次型为标准阵 6 正交变换得到的对角阵上…

【产品分析】从用户体验五要素分析——微信读书

本文从用户体验五要素:表现层面、框架层 、战略层、范围层、结构层,对微信读书进行了分析。 前言 互联网发展的速度也加速了知识更新的速度,也许今天你还手握焦点技能,明天就可能被遗忘在角落。一应俱全的网课、铺天盖地的资讯加…

Autosar PWM配置及使用

文章目录前言PWMPwmChannelPwmAssignedHwUnitPwmChannelIdPwmCoherentUpdatePwmDutycycleDefaultPwmIdleStatePwmNotificationPwmChannelClassPwmPeriodDefaultPwmPolarityPwmReferenceChannelPwmSafetySignalPwmShiftValuePWM输出偏移的使用PwmConfigurationOfOptApiServicesP…

Coreform Cubit (csimsoft Trelis)

Coreform Cubit (csimsoft Trelis) Coreform Cubit(csimsoft Trelis)是Coreform公司开发的最强大、最高效的工程工具之一。通常,公司都会启动自己的Mash项目。对于CFD分析,他们有FEA。这个软件可以开始你的工作,添加你自己的印第安形状&#…

2023年湖北建设厅七大员建筑八大员考试什么时候报名?甘建二

2023年湖北建设厅七大员建筑八大员考试什么时候报名? 建设厅七大员和建筑八大员有什么关系呢?有区别吗? 甘建二老师告诉你,建设厅七大员和建筑八大员没有区别,只是叫法不一样而已,都是一个东西。 七大员和…

Kunbernetes——二进制单节点部署

常见的k8s部署方式 1.Mini kube Minikube是一个工具,可以在本地快速运行一个单节点微型K8s,仅用于学习预览K8s的一些特性使用 部署地址: https://kubernetes.io/docs/setup/minikube 2.Kubeadmin Kubeadmin也是一个工具,提供kubeadm init和…

基于python的opencv中SGBM立体匹配算法实现

文章目录前言一、SGBM和SGM的区别?1.预处理2.代价计算3.动态规划4.后处理二、SGBM的python-opencv的实现SGBM 参数选择参考文章前言 SGBM的核心是SGM算法,自OpenCV2.4.6开始就已经被开源,非常的方便,并被广泛使用。 一、SGBM和SGM…

几何角度理解相机成像过程

本笔记从几何角度来理解相机的成像过程,我们生活在三维世界中,相机所捕捉到的画面是2D的,3D空间中的点是如何投影到2D平面的过程是本笔记关注的。 预设场景 本笔记讨论的东西基于以下场景: 在一个房间内放了一台相机,…

入职阿里的秘密武器,阿里内部“Java学习笔记”,由浅入深,通俗易懂!

导言 提起阿里,行外人联想到的关键词无非是“交易”、“淘宝”、“支付宝”,但对于程序员来说,阿里庞大的技术体系才是最吸引人的。实际上阿里作为国内一线互联网公司的头把交椅,内部的技术体系和发展都是备受关注的,…

Network-UART VHDL设计及仿真实现

设计内容: 实现UART及实时系统完成收发UART操作的测试系统,要求如下: 本工程包括一个测试系统,UART. UART包括baud波特率模块、UART的transfer and receive模块等 1 Objective The objective of this project is to design and build a complete UART in VHDL. Upon comp…

为什么电子商务物流对电商商家的业务很重要?

正是电子商务物流的推动推动了企业发展包括最大渠道在内的整体生态系统;店内提货、电子商务、分销商、经销商、合作伙伴和全球制造商,推动新客户的增长。电子商务巨头的目标是推动更多的销售并提高客户忠诚度。  无论是内部还是第三方物流公司,改进的电…

【小塔秉匠地图】

运行对应地图 1.先清空url运行一遍 2.填上url再次运行就可以了 对地图操作的方法 handleRowClick(row, column, event) {if (row) {this.send(camToAnchor,{name: row.ancName}) // camToAnchor:定位到锚点;ancName锚点的唯一标识} },send(funcName, options) {console.l…

优维低代码:Theme Mode 页面主题和模式

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 连载…