缓存学习实战篇

缓存练习题(用户查询操作)

    public List<ShopType> queryAllType() throws JsonProcessingException {//从缓存中查数据String shopTypeJson = stringRedisTemplate.opsForValue().get("cache:shopType");//如果缓存命中,if (StrUtil.isNotBlank(shopTypeJson)) {return new ObjectMapper().readValue(shopTypeJson, new TypeReference<List<ShopType>>() {});}//如果缓存不命中,查数据库List<ShopType> shopTypeList = shopTypeMapper.selectList(null).stream().sorted(Comparator.comparingInt(ShopType::getSort)).collect(Collectors.toList());if (shopTypeList == null) {return null;} else {stringRedisTemplate.opsForValue().set("cache:shopType", new ObjectMapper().writeValueAsString(shopTypeList));}//如果过数据库不命中,则返回错误//如果过数据库命中,则更新缓存return null;}

在这里插入图片描述

缓存更新策略(更新商品操作)

在这里插入图片描述

缓存操作很快,操作数据库很慢
方案1:如果先删除缓存,再操作数据库,线程1 ,清空缓存,线程2 查询缓存未命中,写入数据库数据是10,此时线程1,数据库更新
方案2:缓存因为某种原因失效了,线程1缓存未命中查出数据库10,另外一个线程2更新数据库,删除缓存,写缓存时数据为20,但是这种情况基本不存在
结论:由于缓存速度很快,所以第二种情况发生概率很低,采用先操作数据库,再删除缓存
在这里插入图片描述

在这里插入图片描述

    @Override@Transactionalpublic Result update(Shop shop) {if (shop.getId() == null) {return Result.fail("500");}//1、更新数据库updateById(shop);//2、删除缓存stringRedisTemplate.delete(CACHE_SHOP_KEY + shop.getId());return Result.ok();}

缓存穿透

在这里插入图片描述

缓存空对象

空的值缓存到Redis
优点:实现简单,维护方便
缺点:额外的内存消耗;造成短期的不一致(如果此时数据库真的增加了,在TTL过期以后才能查询到真数据)
设置TTL,比如5分钟,方式恶意用户访问
在这里插入图片描述

布隆过滤

优点:内存占用较少,没有多余key
缺点:存在误判可能
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

短视频账号矩阵剪辑分发系统无人直播技术开发源头

一、全行业独家源头最全面的核心技术 短视频矩阵新玩法是指利用批量自动混剪系统来处理大量短视频&#xff0c;通过智能算法自动进行视频剪辑、场景切换、特效添加等操作&#xff0c;最终生成高质量、精彩纷呈的混剪视频作品的方法和技术。这一方法的出现使得大规模短视频制作…

LangChain 71 字符串评估器String Evaluation衡量在多样化数据上的性能和完整性

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

如何让GPT/GPT4成为你的编程助手?

详情点击链接&#xff1a;如何让GPT/GPT4成为你的编程助手&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二…

Django框架完成读者浏览书籍,图书详情页,借阅管理

前情回顾&#xff1a; 使用Django框架实现简单的图书借阅系统——完成图书信息管理 文章目录 1.完成展示图书信息功能1.1django 静态资源管理问题1.2编写图书展示模板HTML 2.完成图书详情页功能2.1从后端获取图书详情信息2.2详情页面展示图书数据 3.完成借阅管理功能3.1管理员…

高压消防泵:科技与安全性的完美结合

在现代社会&#xff0c;随着科技的不断发展&#xff0c;各种高科技设备层出不穷&#xff0c;为我们的生活带来了极大的便利。在森林火灾扑救领域&#xff0c;恒峰智慧科技研发的高压消防泵作为一种高效、节能、绿色、环保的优质设备&#xff0c;将科技与安全性完美地结合在一起…

蓝桥杯练习题(五)

&#x1f4d1;前言 本文主要是【算法】——蓝桥杯练习题&#xff08;五&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

【计算机组成原理】IEEE 754 标准定义的浮点数表示格式

IEEE 754 IEEE 754是一种由美国电气和电子工程师协会&#xff08;IEEE&#xff09;制定的标准&#xff0c;用于定义浮点数的表示和运算。这个标准定义了浮点数的格式、舍入规则、特殊值的处理以及算术操作的执行方式。 IEEE 754浮点数标准主要定义了两种浮点数格式&#xff1…

Windows11 安装MySQL8.0操作

一、从MySQL官网下载MySQL安装包 官网地址&#xff1a; www.mysql.com &#xff08;1&#xff09;首先 选择 DOWNLOADS 下载界面 &#xff08;2&#xff09;其次选择 MySQL 客户端 下载 &#xff08;3&#xff09;选择windows安装MySQL &#xff08;4&#xff09;选择MySQL类型…

Jenkins 问题

从gitlab 仓库拉去代码到Jenkins本地报错 ERROR: Couldn’t find any revision to build. Verify the repository and branch configuration for this job. 问题原因&#xff1a; 创建条目》配置的时候&#xff0c;gitlab仓库不存在master分支 修复后&#xff1a;

分裂联邦学习论文-混合联邦分裂学习GAN驱动的预测性多目标优化

论文标题&#xff1a;《Predictive GAN-Powered Multi-Objective Optimization for Hybrid Federated Split Learning》 期刊&#xff1a;IEEE Transactions on Communications, 2023 一、论文介绍 背景&#xff1a;联邦学习作为一种多设备协同训练的边缘智能算法&#xff0…

使用nginx+HTML2canvas将任意html网页转为png图片自定义张数

文章目录 概述网页的转换html2canvas的使用导入导入HTML2canvas库函数定义 nginx部署编写控制截图网页代码iframe 网页控制代码 测试说明 概述 本文简述如何使用nginxhtml2canvas将任意网页html转为png图片 网页的转换 如果是本地网页&#xff0c;直接进行nginx反向代理就行…

30天精通Nodejs--第十七天:express-路由配置

目录 引言基础路由配置路由参数与查询参数路由前缀与子路由路由重定向结语 引言 上篇文章我们简单介绍了express的基础用法&#xff0c;包括express的安装、创建路由及项目启动&#xff0c;对express有了一个基础的了解&#xff0c;这篇开始我们将详细介绍express的一些高级用…