首页 > 其他分享 >【黑马店铺】shopType 黑马点评商铺类型缓存作业

【黑马店铺】shopType 黑马点评商铺类型缓存作业

时间:2024-03-25 20:02:32浏览次数:15  
标签:sort 缓存 shopType shopListJSON Result return 黑马 shopTypes

详情见以下代码,注释有详细说明

@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Override
    public Result queryTypeList() {
        //查询缓存
        String key = RedisConstants.CACHE_SHOP_TYPE_KEY;
        String shopListJSON = stringRedisTemplate.opsForValue().get(key);
        //判断缓存是否命中
        if (StrUtil.isNotBlank(shopListJSON)) {
            //缓存命中
            List<ShopType> shopTypes = JSONUtil.toList(shopListJSON, ShopType.class);
            //根据sort字段排序
            Collections.sort(shopTypes, (o1, o2) -> o1.getSort()- o2.getSort());
            return Result.ok(shopTypes);
        }
        //缓存未命中,查询数据库
        List<ShopType> shopTypes = query().orderByAsc("sort").list();
        //判断数据库中是否有数据
        if (CollectionUtils.isEmpty(shopTypes)) {
            return Result.fail("商铺分类不存在");
        }
        //存入缓存,返回数据
        stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shopTypes));
        return Result.ok(shopTypes);
    }
}

标签:sort,缓存,shopType,shopListJSON,Result,return,黑马,shopTypes
From: https://blog.csdn.net/m0_62090480/article/details/137023489

相关文章

  • 每日面经分享(操作系统:内存、缓存、硬盘)
    1.用户态和内核态的区别a.用户态和内核态是操作系统中的两种不同的执行模式,用于区分应用程序代码和操作系统内核代码的权限和特权级别。b.用户态是指应用程序运行时所处的执行模式。在用户态下,应用程序只能访问受限资源和执行受限操作,无法直接访问底层硬件或执行特权操......
  • Redis 缓存穿透是什么?如何缓解缓存穿透?
    缓存穿透是指在使用缓存技术时,恶意或无效的请求无法从缓存中获取到数据,从而直接落到底层存储系统(如数据库)上,导致频繁地查询底层存储系统,增加系统负载并降低性能。缓存通常用于存储经常被请求的数据,以提高系统的访问速度。但是,当恶意用户故意发送无效或不存在的请求时,缓存无法......
  • 清理系统centos下缓存并释放内存
    问题描述在启动容器的时候报错Exceptioninthread"main"java.lang.RuntimeException:startingjavafailedwith[1]output:##ThereisinsufficientmemoryfortheJavaRuntimeEnvironmenttocontinue.#Nativememoryallocation(mmap)failedtomap832988774......
  • 【C++从0到1-黑马程序员】文件操作
    C++从0到1-黑马程序员课程学习笔记课程链接:61C++文件操作-文本文件-写文件_哔哩哔哩_bilibili程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放可以通过文件将数据持久化C++中对文件操作需要包含头文件 <fstream>文件类型分为两种:文本文件-文件以......
  • 【C++从0到1-黑马程序员】引用
     C++从0到1-黑马程序员课程学习笔记课程链接: 06C++中的引用-引用的基本语法_哔哩哔哩_bilibili1.引用的基本语法作用:给变量起别名语法:数据类型&别名=原名2.引用的注意事项1.引用必须有初始化    举个......
  • redis哨兵 ,redis集群 缓存 以及某些问题: 最左前缀原则,,celery架构
    Redis哨兵#主从复制存在的问题:#1主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master-哨兵解决#2主从复制,只能主写数据,所以写能力和存储能力有限-集群来解决#搭建哨兵的目的一旦一主多从的架构,主库发生故障,能够自动转移一......
  • 容器镜像加速指南:探索 Kubernetes 缓存最佳实践
    介绍将容器化应用程序部署到Kubernetes集群时,由于从registry中提取必要的容器镜像需要时间,因此可能会出现延迟。在应用程序需要横向扩展或处理高速实时数据的情况下,这种延迟尤其容易造成问题。幸运的是,有几种工具和策略可以改善Kubernetes中容器镜像的可用性和缓存。在本篇......
  • 金三银四面试题(二):数据库缓存的数据一致性
    这也是一道非常经典的面试题。可以查到它在很多面经中都出现过。还有一个比较的具体问法其实是:如何保证MySQL和Redis的数据一致性?什么是数据一致性例如将Redis用作MySQL数据的缓存时,由于数据在MySQL中的变更,导致Redis中的缓存数据与实际数据不一致的情况。这种不一致可能......
  • 黑马Java0基础课程学习记录第五天(p49-p53)-3.23
    day05-循环高级训练+leecode练习1.无限循环2.条件控制语句breakcontinuecontinue:不能单独存在的,只能存在于循环当中。表示:跳过本次循环,继续执行下次循环。eg:break:不能单独存在的。可以用在switch和循环中,表示结束,跳出的意思。eg:练习1:逢7过游戏:从1-100打印......
  • 清除VS2022设计器缓存,解决C盘空间不足的问题
    笔者开发使用的一台老旧笔记本C盘只有100G,C盘剩余空间经常不足1G。通过使用磁盘空间扫描工具WizTree发现C盘下面VS2022设计器缓存目录占用了2.2G空间,具体位置在C:\Users\admin\AppData\Local\Microsoft\VisualStudio\17.0_e87c7827\Designer\Cache其中admin是我当前用户名,17.......