[redis]黑马点评-商品类型缓存(课后练习)

目录

介绍

代码

ShopTypeController

IShopTypeService

ShopTypeServiceImpl

RedisConstants


介绍

黑马点评P37集课后作业,给商铺类型业务添加缓存。

和上一条不同的是,商户缓存是String类型,商户类型的数据是List集合类型,需要做一些改动。

代码

ShopTypeController

复制代码
@RestController
@RequestMapping("/shop-type")
public class ShopTypeController {
    @Resource
    private IShopTypeService typeService;

    @GetMapping("list")
    public Result queryTypeList() {
        return typeService.queryAll();
    }
}

IShopTypeService

复制代码
public interface IShopTypeService extends IService<ShopType> {
    /**
     * 查询所有商铺类型
     * @return 商铺类型列表
     */
    Result queryAll();
}

ShopTypeServiceImpl

复制代码
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 查询所有商铺类型
     *
     * @return 商铺类型列表
     */
    @Override
    public Result queryAll() {
        //1、获取redis中的商铺类型缓存
        String shopType = stringRedisTemplate.opsForValue().get(CACHE_SHOPTYPE_KEY);
        //2、判断缓存是否存在
        if (StrUtil.isNotBlank(shopType)){
            //3、存在,直接返回
            return Result.ok(JSONUtil.toList(shopType, ShopType.class));
        }
        //4、不存在,查询数据库
        List<ShopType> shopTypes = query().orderByAsc("sort").list();
        //5、不存在,返回错误
        if (shopTypes == null){
            return Result.fail("商铺类型不存在");
        }
        //6、存在,写入redis
        stringRedisTemplate.opsForValue().set(CACHE_SHOPTYPE_KEY, JSONUtil.toJsonStr(shopTypes));
        return Result.ok(shopTypes);
    }
}

RedisConstants

复制代码
public class RedisConstants {

    public static final String CACHE_SHOPTYPE_KEY = "cache:shoptype:";

}

可以看到商品类型数据被正确的存储到Redis中

相关推荐
ofoxcoding1 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
NeilYuen2 天前
gRPC结合FAISS构建AI助手语义缓存模块(一):设计
人工智能·缓存·faiss
taocarts_bidfans2 天前
反向海淘跨境缓存架构优化:taocarts Redis分层缓存实战技术
redis·缓存·架构·反向海淘·taocarts
退休倒计时2 天前
【每日一题】LeetCode 146. LRU 缓存 TypeScript
算法·leetcode·缓存·typescript
炘爚2 天前
Linux——Redis
数据库·redis·缓存
小挪号底迪滴2 天前
Redis 和 MySQL 数据不一致怎么办?缓存更新策略实战
redis·mysql·缓存
闪电悠米2 天前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
Saniffer_SH3 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
AC赳赳老秦3 天前
OpenClaw + 飞书多维表格:自动同步数据、生成统计图表、触发自动化任务
java·大数据·python·缓存·自动化·deepseek·openclaw