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

相关推荐
ffqws_3 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
枫叶丹414 小时前
Loop Engineering:从提示词到循环系统
数据库·redis·缓存·loop
云计算磊哥@2 天前
运维开发宝典051-缓存服务Redis集群2
redis·缓存·运维开发
怕孤单的草丛2 天前
缓存管理面临的主要问题
java·数据库·缓存
摇滚侠2 天前
Redis7 零基础到进阶 Linux 离线安装 Redis 09-10
数据库·redis·缓存
zenithdev12 天前
fastcache:为 Go 设计的低 GC 压力内存缓存
开发语言·其他·缓存·golang
烟漠河洛3 天前
线上事故复盘:Redis幂等性设计边界没覆盖跨状态请求,订单状态机直接崩了
数据库·redis·缓存
酷炫的水壶3 天前
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
运维·nginx·缓存
夜影风3 天前
Redis集群创建时出现“Node xxx.xxx is not empty”问题处理
数据库·redis·缓存
utf8mb4安全女神3 天前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存