首先明确返回值是一个 List<ShopType>
类型那么我们修改此函数并在 TypeService 中声明 queryTypeList 方法,并在其实现类中实现此方法
@GetMapping("list")
public Result queryTypeList() {
return typeService.queryTypeList();
}
实现此方法首先需要明确数据类型,我选择的是 List ,可以方便的实现数据的读写,代码如下
@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 中了!