[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中

相关推荐
gwf2162 小时前
SSD读写速度深度解析:顺序读写vs随机读写、IOPS、延迟,你的硬盘性能到底怎么看?
git·嵌入式硬件·缓存·github·智能硬件
番茄炒鸡蛋加糖4 小时前
缓存三大问题
缓存
江晓鱼未暖9 小时前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
小罗水9 小时前
第13章 Redis 缓存、幂等锁与任务状态
数据库·redis·缓存
热心市民lcj10 小时前
Spring Boot 整合 Caffeine 本地缓存实战
spring boot·后端·缓存
zx11545011 小时前
【热点 Key 探测与加长缓存 TTL 实战】
缓存
toooooop81 天前
如何用 ss + ps 精准定位本机 Redis 的“隐形”消费者?
linux·数据库·redis·缓存
软萌萌的11 天前
C#中的多级缓存架构设计与实现深度解析
缓存·c#·wpf
醉城夜风~1 天前
HTML表单域学习博客:表单标签、输入框、按钮详解
android·java·缓存
肥胖小羊1 天前
企业微信应用的 Token 缓存策略与分布式锁高可用设计
分布式·缓存·企业微信