Redis框架(五):大众点评项目 商品目录 添加Redis缓存

news2024/11/26 10:43:40

大众点评项目 商品目录 添加Redis缓存

  • 需求:基于Redis查询商品信息
  • 业务实现
    • 给商品添加缓存
    • 给店铺类型添加缓存
  • 总结和业务流程

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

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

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

需求:基于Redis查询商品信息

为了降低后端负载,提升读写效率和响应时间
我们可以通过缓存存取一些数据信息:存储在db的商品信息,或者前端展示的静态资源

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

业务实现

给商品添加缓存

以往的操作是调用了MP自带的API直接db查询

    /**
     * 根据id查询商铺信息
     * @param id 商铺id
     * @return 商铺详情数据
     */
    @GetMapping("/{id}")
    public Result queryShopById(@PathVariable("id") Long id) {
        return Result.ok(shopService.getById(id));

我们进入Service层去修改业务,

  1. 通过@Resource 注入Bean private StringRedisTemplate stringRedisTemplate;
  2. 选取合适的类型存放k-V,这里我选择的是String
  3. 通过JSONUtil.toBean将我们存入Redis的JSON数据转换成相应的Shop.class格式
  4. 如果查不到,就去DB查,这里就是对应的业务逻辑
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Override
    public Result queryById(Long id) {
        String key = RedisConstants.CACHE_SHOP_KEY + id;
        String shopStr = stringRedisTemplate.opsForValue().get(key);
        if(StrUtil.isNotBlank(shopStr)){
            Shop shop = JSONUtil.toBean(shopStr, Shop.class);
            return Result.ok(shop);
        }

        Shop shop = getById(id);
        if (shop == null) {
            return Result.fail("店铺类型不存在!");
        }
        stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop), RedisConstants.CACHE_NULL_TTL, TimeUnit.HOURS);

        return Result.ok(shop);
    }

给店铺类型添加缓存

我们进入Service层去修改业务,

  1. 通过@Resource 注入Bean private StringRedisTemplate stringRedisTemplate;
  2. 选取合适的类型存放k-V,这里我选择的是String
  3. 通过JSONUtil.toBean将我们存入Redis的JSON数据转换成相应的Shop.class格式,这里是List类型
  4. 如果查不到,就去DB查,这里就是对应的业务逻辑
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Override
    public Result queryTypeList() {
        String key = SHOP_TYPE_KEY;
        List<ShopType> shopTypeList = JSONUtil.toList(stringRedisTemplate.opsForValue().get(key),ShopType.class);;
        log.debug("typeList: " + shopTypeList.toString());
        if(shopTypeList.size()==0){
            shopTypeList = query().orderByAsc("sort").list();
            log.debug("typeList: " + shopTypeList.toString());
            if(shopTypeList==null) {
                return Result.fail("没有相关信息");
            }
            stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shopTypeList), CACHE_NULL_TTL, TimeUnit.HOURS);
            return Result.ok(shopTypeList);
        }


        return Result.ok(shopTypeList);
    }
}

总结和业务流程

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

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

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

相关文章

Vue Demi是如何让你的库同时支持Vue2和Vue3的

Vue Demi是什么 如果你想开发一个同时支持Vue2和Vue3的库可能想到以下两种方式&#xff1a; 1.创建两个分支&#xff0c;分别支持Vue2和Vue3 2.只使用Vue2和Vue3都支持的API 这两种方式都有缺点&#xff0c;第一种很麻烦&#xff0c;第二种无法使用Vue3新增的组合式 API&am…

【Redis】Redis跳表与实现源码解析(Redis专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

Tomcat下载和安装

下载 Tomcat官网网址 我选择的是8&#xff0c;根据自己需要选择不同版本 选择64位下载 下载有点慢&#xff0c;等一会儿就行 安装 首先确认安装了JDK&#xff1a;命令行窗口输入java -version 配置Tomcat环境变量 配完之后验证是否成功。 winR->cmd->输入startup.bat…

什么是社交新零售?社交新零售的底层商业又是逻辑是什么?

一千个品牌商心中&#xff0c;有一千个新零售——自从马云2016年10月提出新零售的概念后&#xff0c;电商平台、传统商超、电商品牌、线下品牌&#xff0c;汹涌而至&#xff0c;都想搭上“新零售快车”。 新零售模式是依靠于大数据的开发应用&#xff0c;国内新零售模式发展多年…

Node.js快速入门

一、简介 1、什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎&#xff0c;V8引擎执行Javascript的速度非常快&#xff0c;性能非常好。 2、Node.js有什么用 如果你是一个前端程序…

【有料c++题目周刊 | 第一期】希腊诸神

文章目录第一题&#xff1a;珀耳修斯点金题目描述输入描述输入示例输出描述输出示例解题思路&C题解第二题&#xff1a;女神赫拉题目描述输入描述输入示例输出描述输出示例解题思路&C题解第一题&#xff1a;珀耳修斯点金 题目描述 某希腊神话故事中&#xff0c;有一个…

物联网通信技术|课堂笔记week2-2|9月7日·21日

sudo ifconfig bridge101 hw ether 9e:3e:53:38:45:66 目录 Linux网络管理命令 (1)route (2)ip (3)netstat (4)ping ​​​​​​两台电脑连起来后ping不通? (5)telnet (6)ssh (7)wget Linux网络管理命令 (1)route 路由为互联网的中转站 静态路由 动态路由 rout…

Go代码审计学习(一)

文章目录Vulnerability-goapp/assets// 根目录/login/new/top/profile/profile/edit/upload/post /timeline/timeline/searchpost/adminconfirm /adminlogin /adminusersCSRF网上有关Go的代码审计好少哇&#xff0c;能找到的文章也不多&#xff0c;害&#xff0c;没办法也得学 …

网络协议—应用层的HTTP协议

URL&#xff0c;叫作统一资源定位符。之所以叫统一&#xff0c;是因为它是有格式的。HTTP 称为协议&#xff0c;www.163.com 是一个域名&#xff0c;表示互联网上的一个位置。正是因为这个东西是统一的&#xff0c;所以当你把这样一个字符串输入到浏览器的框里的时候&#xff0…

软件测试是要学习什么技能?

推荐阅读&#xff1a; 2022年简历石沉大海&#xff0c;软件测试行业当前找工作有多难&#xff1f; [内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ 在确定软件开发可行的状态下&#xff0c;对软件是要实现的各个功能做到详细分析。要求分析阶段是一个很…

两起并购!深兰科技完成自动驾驶新能源车产业生态链布局

近日&#xff0c;深兰科技集团全资控股的熊猫汽车(上海)有限公司分别与一汽凌源、湖南加立减新能源科技正式签约&#xff0c;完成了对这两家公司的并购&#xff0c;为企业自动驾驶新能源汽车产业生态链的建设蓝图添上了浓重的一笔。 此次被深兰科技并购的一汽凌源汽车制造有限公…

Java二维数组拓展练习

例 1 对角线输出&#xff1a; 已知一个n*n的矩阵&#xff08;n<20&#xff09;&#xff0c;把矩阵二条对角线上的元素值加上10&#xff0c;然后输出这两条新对角线上的所有元素之和。 注意当n为奇数时两条对角线交叉的那个元素改变时只需要改变一次&#xff0c;累加的时候…

46.for循环嵌套之九九乘法表

46.for循环嵌套之九九乘法表 文章目录46.for循环嵌套之九九乘法表1. 目标任务2. 完成第1行输出2. 分析前3行规律3. 编写第1行代码4. 编写前2行代码5. 调整输出格式6. 完成总代码1. 目标任务 本节的任务是利用for循环嵌套编写九九乘法表。 1*11 1*22 2*24 1*33 2*36 3*39 1…

语音识别之语音激活(VAD)检测(一)

导读 语音激活检测(Vioce Activation Detection)简称VAD&#xff0c;用来检测语音信号是否存在。VAD技术在语音领域中应用非常的广泛&#xff0c;在语音识别中我们可以对长语音通过VAD来检测出语音信号的空隙&#xff0c;通过这个空隙来分割语音&#xff0c;将长语音切分成短语…

正大国际期货:如何摆脱炒黄金期货被套单?

投资失败无非两点&#xff1a;一是自身原因&#xff0c;自己没有经验&#xff0c;盲目的操作肯定会造成亏损&#xff1b;二是指导老师的实力问题&#xff0c;指导老师对行情的方向把握不准&#xff0c;经常喊反弹&#xff0c;造成你的亏损。想要走得快&#xff0c;就独自上路&a…

Python每日一练 09——多文件操作

Python每日一练 09——多文件操作 文章目录Python每日一练 09——多文件操作一、单文件拆分为多个文件二、多文件合并为单文件1、获取数据文件名2、获取股票名列表3、读单支股票数据4、读多支股票数据5、多文件中数据合并到一个文件一、单文件拆分为多个文件 我们写一个txt文件…

数字图像处理(入门篇)九 图像数据预处理之滤波

目录 1 模板运算 &#xff08;1&#xff09;模板卷积 &#xff08;2&#xff09;模板排序 2 均值滤波 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;结果图 3 高斯滤波 &#xff08;1&#xff09;代码 &#xff08;2&#xff09;结果图 4 中值滤波 &#…

IB数学HL/SL考试大纲简单介绍

IB数学难度怎么样&#xff1f;IB数学内部评估和外部评估是怎么评分的&#xff0c;IB数学HL和SL的考试大纲&#xff1f; 下面介绍IB数学框架体系IB数学SL考试大纲 SL数学为必修课 考试内容相对比较基础 代数&#xff08;Algebra&#xff09;&#xff1a;涉及数列问题&#xff…

CentOS虚拟机搭建Hive环境

注&#xff1a;本文是对 https://www.bilibili.com/video/BV1CU4y1N7Sh 的实践。 关于如何搭建Hadoop集群&#xff0c;请参考我另一篇文档。 环境 CentOS 7.7JDK 8Hadoop 3.3.0Hive 3.1.2 准备 确认Hadoop的 etc/hadoop/core-site.xml 文件包含如下配置&#xff1a; <…

3D建模师做多了女人会不会找不到老婆?次世代美少女战士建模流程讲解

什么是次世代&#xff1f; 次世代是个舶来语&#xff0c;“次世代游戏”指代和同类游戏相比下更加先进的游戏&#xff0c;即“下一代游戏”。 次世代是利用高模烘焙的法线贴图回帖到低模上&#xff0c;让低模在游戏引擎里可以及时显示高模的视觉效果。模型面数比较高&#xf…