黑马点评 - 商铺类型缓存练习题(Redis List实现)

首先明确返回值是一个 List<ShopType> 类型那么我们修改此函数并在 TypeService 中声明 queryTypeList 方法,并在其实现类中实现此方法

java 复制代码
    @GetMapping("list")
    public Result queryTypeList() {
        return typeService.queryTypeList();
    }

实现此方法首先需要明确数据类型,我选择的是 List ,可以方便的实现数据的读写,代码如下

java 复制代码
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @Override
    public Result queryTypeList() {
//        1.从 redis 查询商铺列表
        String key = "cache:shoplist";
        List<ShopType> typeList = BeanUtil
                .copyToList(stringRedisTemplate.opsForList().range(key, 0, -1), ShopType.class);
//        2.命中,直接返回
        if (typeList != null && !typeList.isEmpty()) {
            return Result.ok(typeList);
        }
//        3.未命中,查询数据库
        typeList = query().orderByAsc("sort").list();
//        4.将商铺列表保存至 redis
        for (ShopType shopType : typeList) {
            stringRedisTemplate.opsForList().leftPush(key, shopType.getName());
        }
//        5.返回店铺列表
        return Result.ok(typeList);
    }
}

运行之后刷新网页可以发现店铺列表已经存储到了 Redis 中了!

相关推荐
zhaoyong22238 分钟前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_901006471 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python
m0_470857641 小时前
HTML怎么创建响应式图片备选方案_HTML srcset与sizes结构【详解】
jvm·数据库·python
身如柳絮随风扬1 小时前
商品服务架构实战:多数据源切换与分级缓存设计全解析
缓存·架构
lifewange1 小时前
PostgreSQL介绍
数据库·postgresql
oradh2 小时前
Oracle数据库中的Java概述
java·数据库·oracle·sql基础·oracle数据库java概述
2301_795099742 小时前
如何优化SQL中大批量数据的物理删除_分批次与间隔控制
jvm·数据库·python
2301_812539672 小时前
CSS如何引入CSS形状生成器_通过自定义属性实现图形化样式
jvm·数据库·python
maxmaxma2 小时前
Claude Code集成DeepSeek-V4-pro全栈开发 - MCP 连接数据库
数据库·ai
lb29172 小时前
navicat连接Oracle报错了:“身份证明检索失败”
数据库·oracle·连接oracle数据库报错