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

相关推荐
CDN3603 小时前
CDN 缓存策略优化实操:出海业务提升缓存命中率,TTL、缓存 Key、刷新配置与踩坑总结
缓存·cdn加速·cdn防护·360cdn
mit6.8249 小时前
保持缓存的有效性
缓存
AI多Agent协作实战派16 小时前
AI多Agent协作系统实战(四十六):改了十次规则,AI员工还是老样子——会话缓存的坑
java·spring·缓存
做一个AK梦1 天前
Redis 深入浅出
java·数据库·redis·缓存
Java牛马1 天前
Caffeine 缓存及其应用相关总结
java·redis·缓存·caffeine·数据一致性·本地缓存
xiaojiaohuazi1 天前
国产安陆EG4S20 FPGA实现千兆以太网TCP/IP:AD7606C 8通道1 MSPS采集、SDRAM缓存与Python上位机
tcp/ip·缓存·fpga开发
Nil2082 天前
leetcode 146LRU缓存
算法·leetcode·缓存
BK贝壳2 天前
Python底层:1亿个布尔值缓存失效标记,list爆内存numpy爆拷贝,bool-hybrid-array混合存储实测
数据结构·python·缓存·性能优化·list·numpy
mmsx2 天前
置灰按钮为什么自己又“亮“了?一次状态缓存“双写冲突“的排查记录
java·缓存·bug·livedata
音符犹如代码2 天前
Varnish Cache 实战:反向代理缓存原理与 VCL 配置
java·spring·缓存