黑马点评--给店铺类型查询添加缓存

news2024/9/17 7:43:23

controller/ShopTypeController.java 

    /**
     * 店铺分类查询,用于展示首页头部店铺分类
     * @return
     */
    @GetMapping("list")
    public Result queryTypeList() {
        return typeService.queryList();
    }

service/IShopTypeService.java 

     Result queryList();

service/impl/ShopTypeServiceImpl.java 

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Override
    public Result queryList() {
        //使用list取 [0 -1] 代表全部
        //从redis中查询所有分类
        List<String> shopTypeList = redisTemplate.opsForList().range(SHOP_LIST_KEY, 0, -1);
        if (CollectionUtil.isNotEmpty(shopTypeList)) {
            //shopTypeList.get(0) 其实是获取了整个List集合里的元素,0是第0个key
            //查询到,直接返回
            List<ShopType> types = JSONUtil.toList(shopTypeList.get(0), ShopType.class);
            return Result.ok(types);
        }

/*        //使用string 取
        String shopType = redisTemplate.opsForValue().get(SHOP_LIST_KEY);
        if (!StrUtil.isEmpty(shopType)){
            List<ShopType> types= JSONUtil.toList(shopType, ShopType.class);
            return Result.ok(types);
        }*/

        //redis中没有,查询数据库
        List<ShopType> typeList = query().orderByAsc("sort").list();
        //数据库中没有,报错
        if (CollectionUtil.isEmpty(typeList)) {
            return Result.fail("列表信息不存在");
        }

        //list 存
        //数据库中有,存到redis,注意存的位置和上面取的位置一致。
        String jsonStr = JSONUtil.toJsonStr(typeList);
        redisTemplate.opsForList().leftPushAll(SHOP_LIST_KEY, jsonStr);
        return Result.ok(typeList);

/*        //string 存
        redisTemplate.opsForValue().set(SHOP_LIST_KEY,JSONUtil.toJsonStr(typeList);*/
    }

运行,redis数据库中出现数据如下,测试成功。

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

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

相关文章

4234324

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年6月20日 最后&#xff1a; 十分感谢你可以耐着性子把它读完和我可以坚持写到这里&#xff0c;送几句话&#xff0c;对你&#xff0c;也对我&#xff1a; 1.一个冷知识&#xff1a; …

alg-in-go-1:动态连通性问题

前言&#xff1a; 有本算法书叫&#xff1a;Algorithms 4th Edition.pdf&#xff0c;它是用java实现的&#xff0c;但是算法的内核是一样&#xff0c;不在乎于语言&#xff0c;考虑到java当今的…, 咱们尝试用golang学习算法. 问题&#xff1a; 思考&#x1f914;&#xff…

弹幕背后:B站UP主创作服务解析

引言 在B站&#xff0c;每一条飘过的弹幕都是一个故事的碎片&#xff0c;它们汇聚成一幅幅生动的社交画卷。这里&#xff0c;不仅仅是一个视频分享平台&#xff0c;弹幕背后更是一个充满活力的创作者生态系统。B站以其独特的弹幕文化&#xff0c;为创作者和观众之间搭建起了一座…

【电控笔记-xuan】各种估测器扰动估计性能比较

各种扰动观测器观测结果 蓝色: 扰动值 隆博戈估测器扰动补偿 论文53disturb扰动补偿 2order eso 观测

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-01-层次式体系结构概述

文章目录 1. 常用层次是架构2. 层次式架构设计的注意点2.1 污水池反模式2.2 应用变得庞大 本章教材又赘述了一遍架构的定义和层次架构风格的概述&#xff0c;我之前的笔记都写了 架构的定义回看《第7章-系统架构设计基础知识-01-软件架构&#xff08;Software Architecture&…

AD的问题

连续放置同规则元件&#xff1a;先选择再按Tab编辑放置&#xff1b; 拖动元件&#xff1a;&#xff08;shift 空格 &#xff1a;旋转元件&#xff1b;原理图中按x水平&#xff0c;按y垂直翻转&#xff09;按ctrl键可以丝滑流畅放置 测试距离&#xff1a;RM 距离单位转…

初学Mybatis之动态 SQL

动态 SQL 是指根据不同的条件生成不同的 SQL 语句 动态 SQL 详情请看链接 搭建环境&#xff1a; mysql 建立博客表 CREATE TABLE blog(id VARCHAR(50) NOT NULL COMMENT 博客id,title VARCHAR(100) NOT NULL COMMENT 博客标题,author VARCHAR(30) NOT NULL COMMENT 博客作者…

华为od机试真题:悄悄话(Python)

2024华为OD机试&#xff08;C卷D卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 给定一个二叉树&#xff0c;每个节点上站一个人&#xff0c;节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时&#xff0c;根节点所在位置的人有一个悄悄话想要传…

windows家庭版安装Hyper-V

uniapp开发鸿蒙需要开启Hyper-V&#xff0c;但家庭版默认没有&#xff0c;去网上搜索整理了一下。 1.检查是否安装过Hyper-V 直接搜索 Hyper-V&#xff0c;如果出现就代表有&#xff0c;如果没出现&#xff0c;就搜索 启用或关闭windows功能 。 如果有Hyper-V这一项&…

eclipse手动安装Ivy插件

1、下载四个文件 &#xff08;1&#xff09;从这个网址选择一个自己需要的版本的“ivy-”开头的文件夹进去&#xff08;是“ivy”开头&#xff0c;不是“ivyde”&#xff09; https://archive.apache.org/dist/ant/ivyde/updatesite/ 我这里选的是“ivy-2.5.0.final_201910201…

TortoiseSVN迁移到本地git

TortoiseSVN迁移到本地git 文章目录 TortoiseSVN迁移到本地git0 背景1 环境准备2 SVN库迁移到VisualSVN2.1 导出dump2.2 将dump文件灌入VisualSVN2.3 获取SVN仓最新URL 3 迁移到Git库中4 迁移分支到Git库 0 背景 之前在前东家工作都是采用git进行项目管理&#xff0c;高效便捷…

大模型应用中常听说的投毒实验是什么?

大模型应用中常听说的投毒实验是什么&#xff1f; 大模型投毒实验是指在训练或使用大规模人工智能模型&#xff08;如GPT-4等&#xff09;时&#xff0c;通过有意加入恶意数据或修改训练过程&#xff0c;使模型产生不正确或有害输出的行为。随着人工智能技术的快速发展&#x…

【深度学习】声码器(Vocoder),Vocos 论文

Vocos: Closing the gap between time-domain and Fourier-based neural vocoders for high-quality audio synthesis https://arxiv.org/abs/2306.00814 https://github.com/gemelo-ai/vocos?tabreadme-ov-file 文章目录 Vocos&#xff1a;弥合时域和基于傅里叶的神经声码器…

必看!50个ChatGPT顶尖学术论文指令,助你高效学术研究

随着人工智能技术的进步&#xff0c;AI已成为学术创作的重要工具。本文将为您展示如何利用AI来润色您的论文。我们精心整理了50个顶级ChatGPT学术论文指令&#xff0c;强烈建议您加以利用&#xff01; 这些指令不仅实用&#xff0c;还能大幅提升您的写作效率。无论是翻译难懂的…

高效的知识付费SaaS平台构建:探索Spring Cloud结合Spring Boot的最佳实践

知识付费平台&#xff1a;引领在线教育的未来 在数字化教育的浪潮中&#xff0c;知识付费平台以其便捷、高效的学习方式&#xff0c;迅速成为教育领域的新宠。该平台围绕用户需求构建&#xff0c;提供职业技能、生活兴趣、人文社科等多领域的专业知识&#xff0c;并通过视频播…

【时时三省】(C语言基础)for循环

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 语法 fou(表达式1&#xff1b;表达式2&#xff1b;表达式3) 循环语句 表达式1 表达式1为初始化部分&#xff0c;用于初始化循环变量的。 表达式2 表达式2为条件判断部分&#xff0c;用于判…

Vue 中使用 InMap 创建动态轨迹地图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 中使用 InMap 创建动态轨迹地图 应用场景介绍 动态轨迹地图广泛应用于物流追踪、车辆管理、人员定位等场景&#xff0c;可直观展示移动对象的历史轨迹和实时位置。本代码示例展示了如何使用 Vue 框架和 I…

vue3 antdv3 检测Modal的尺寸是否改变,全屏的时候获取Modal的width与height,然后我们就可以动态设置表格高度了。

1、先上个图&#xff0c;我们要实现如下的效果&#xff0c;中间的表格部分要自动随Modal的改变而改变。官方&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 2、那我们一定要能够检测到Modal的宽高的改变才行&#xff0c;然后…

2024非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输!

一、前言 接口测试最近几年被炒的火热了&#xff0c;越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢&#xff1f; 主要是平常的功能点点点&#xff0c;大家水平都一样&#xff0c;是个人都能点&#xff0c;面试时候如果问你平常在公司怎么测试的&#…

vue实现简易的全局加载动画效果

效果展示 思路 封装一个组件&#xff0c;放Img&#xff0c;伪类样式&#xff0c;固定在屏幕fixed 然后App应用这个组件&#xff0c;Z index拉最大&#xff0c;防止用户在加载动画时乱点&#xff0c; v-show绑定loading&#xff0c;该数据可以放vuex还是任一的公共状态管理变…