黑马点评 - 商铺类型缓存练习题(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 中了!

相关推荐
m0_684501981 分钟前
HTML图片怎么用Bitbucket Pipelines发布_Bitbucket自动构建HTML站点
jvm·数据库·python
不懂的浪漫3 分钟前
一次设备映射缓存设计:用多索引 Map 把高频查询从遍历变成直接命中
java·算法·spring·缓存
2301_796588506 分钟前
Navicat连ClickHouse出现中文乱码怎么办_字符集编码调整
jvm·数据库·python
Lentou7 分钟前
Prompt提示词相关教程
数据库·prompt
Irissgwe7 分钟前
redis之持久化
数据库·redis·缓存
2401_837163897 分钟前
CSS如何处理带有状态切换的折叠菜单_利用BEM修饰符管理状态
jvm·数据库·python
eLIN TECE8 分钟前
Redis重大版本整理(Redis2.6-Redis7.0)
java·数据库·redis
m0_6178814210 分钟前
Navicat连接MariaDB报1045密码错误怎么办_权限排查与解决
jvm·数据库·python
m0_5150984211 分钟前
C#怎么操作WPF数据模板 C#如何用DataTemplate定义集合项的显示样式和布局【控件】
jvm·数据库·python
qq_6543669811 分钟前
golang如何实现告警分级与升级_golang告警分级与升级实现步骤
jvm·数据库·python