缓存更新操作实例

Controller → Service(接口) → ServiceImpl(实现类,写缓存)

1.list缓存


复制代码
@RestController
@RequestMapping("/shop-type")
public class ShopTypeController {

    @Resource
    private IShopTypeService typeService;

    @GetMapping("/list")
    public Result queryTypeList() {
        // 只做一件事:调用service
        return Result.ok(typeService.queryTypeList());
    }
}
复制代码
public interface IShopTypeService extends IService<ShopType> {
    // 查询店铺类型列表(带缓存)
    List<ShopType> queryTypeList();
}

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

    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private static final String KEY = "cache:shop:type:list";

    @Override
    public List<ShopType> queryTypeList() {
        // 1. 查缓存
        String json = stringRedisTemplate.opsForValue().get(KEY);
        if (StrUtil.isNotBlank(json)) {
            return JSONUtil.toList(json, ShopType.class);
        }

        // 2. 查数据库(标准写法!)
        List<ShopType> list = query().orderByAsc("sort").list();

        // 3. 写缓存
        stringRedisTemplate.opsForValue().set(KEY, JSONUtil.toJsonStr(list));

        return list;
    }
}

2.id缓存怎么写?

相关推荐
Lyyaoo.2 小时前
Spring中Bean的作用域与生命周期
java·后端·spring
遇见你...2 小时前
B03 SpringMVC拦截器
java·开发语言
東雪木2 小时前
Java学习——接口 (interface) 与抽象类 (abstract) 的本质区别、选型标准
java·开发语言·jvm·学习·java面试
_MyFavorite_2 小时前
JAVA重点基础、进阶知识及易错点总结(16)多线程基础(Thread & Runnable)
java·开发语言
大数据新鸟2 小时前
java8基础知识--字符串
java
ChoSeitaku2 小时前
NO.2|数据结构设计|日志封装|DeepSeel接入封装|全量返回实现测试|SSE|流式响应实现测试
java·jvm·数据结构
斌味代码2 小时前
后端实战实战案例
java
小信丶2 小时前
彻底解决 IDEA 启动 SpringBoot 报错:Command line is too long
java·spring boot·intellij-idea
梅西库里RNG2 小时前
Java进阶理解纪要
java·开发语言