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

黑马点评练习题-给店铺类型查询业务添加缓存(String和List实现)

目录

一、前言

二、需求

三、String实现

四、List实现


一、前言

这是黑马点评实战篇-商户查询缓存-0.3缓存练习题分析,练习给店铺类型查询业务添加缓存。这里我自己是通过String实现的,当然在网上查询也能够找到其他的实现方式。String实现我会展示自己写的代码(算简单一点但是严格按照之前查询店铺缓存的来),List实现我会转载我认为其他大佬写的比较好的(实现起来会复杂一点)

二、需求

修改ShopTypeController中的queryTypeList方法,添加查询缓存

三、String实现

将ShopTypeController改为如下图所示:

在IShopTypeList中创建queryTypeList并加上注释

进入实现类中实现queryTypeList方法(核心就是完成这个实现方法)

整个实现方法完成的效果如下图:(记得注入StringRedisTemplate,在常量类中加上CACHE_SHOP_TYPE_KEY)

整个实现方法的参考代码如下:

@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {@Resourceprivate StringRedisTemplate stringRedisTemplate;/*** 查询所有商铺类型*/public Result queryTypeList() {//用String实现,opsForValue写法//public static final String CACHE_SHOP_TYPE_KEY = "cache:shopType:";String key = CACHE_SHOP_TYPE_KEY;//1.从redis查询商铺类型缓存String shopTypeJson = stringRedisTemplate.opsForValue().get(key);//2.判断是否存在if (StrUtil.isNotBlank(shopTypeJson)){//3.存在,直接返回List<ShopType> shopTypeList = JSONUtil.toList(shopTypeJson, ShopType.class);return Result.ok(shopTypeList);}//4.不存在,查询数据库  MybatisPlus的query()拿来用List<ShopType> shopTypeList = query().orderByAsc("sort").list();//5.数据库中不存在,返回错误信息if (shopTypeList == null){return Result.fail("商铺类型不存在!");}//6.数据库中存在,写入redisString jsonStr = JSONUtil.toJsonStr(shopTypeList);stringRedisTemplate.opsForValue().set(key, jsonStr);//7.返回return Result.ok(shopTypeList);}
}

启动服务测试观察DataGrip效果如下:

四、List实现

这里我转载其他大佬的博客,大家自行了解

【黑马点评】实战篇-作业-店铺类型缓存-List实现_黑马点评作业-CSDN博客

http://www.dtcms.com/a/292429.html

相关文章:

  • android模拟器手机打开本地网页
  • 科技向善,银发向暖:智慧养老与经济共筑适老未来
  • 如何给手机充电才不伤电池?
  • 未来趋势:LeafletJS 与 Web3/AI 的融合
  • ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用
  • STM32项目分享:智能洗碗机
  • Java并发编程:JUC核心组件全解析
  • 牛客NC16625 [NOIP2009]分数线划定(排序)
  • 矿用支架电液控配件3针3孔钢丝编织橡胶护套连接器
  • 基于深度学习的语音情感识别系统的设计与实现【BiLSTM、多层感知神经网络、Emotion2Vec、与CustomFeature】
  • 对随机生成的html文件做标签简析
  • RPA软件机器人如何提高工作效率?
  • python 中什么是作用域(Scope)?为什么函数内部的变量在外部无法访问?
  • 【华为机试】547. 省份数量
  • How script location, CWD, and relative imports interact
  • TIM定时中断
  • 操作系统:系统调用(System Calls)
  • 风险识别清单:构建动态化的风险管理体系
  • 从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记
  • UE5 UI 水平框
  • GoLand 部署第一个项目
  • 智慧制造合同解决方案
  • 外网访问内部私有局域网方案,解决运营商只分配内网IP不给公网IP问题
  • 【Docker】Docker的初步认识以及Ubuntu下的Docker环境安装、配置
  • iOS加固工具有哪些?从零源码到深度混淆的全景解读
  • 【Spring Boot】Spring Boot循环依赖破解:@Lazy与Setter注入的取舍指南(流程图修复版)
  • p5.js 圆弧的用法
  • 一键生成流程图,省时省力!
  • 网络安全基础作业三
  • ubuntu24.04安装CUDA、VLLM、Pytorch等并部署Qwen3-8B-AWQ【50系显卡通用】