黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式
p37使用list结构 配合stream流完成作业
@Override
public Result listShopType() {
//从Redis查
List<String> shopTypeCache = stringRedisTemplate.opsForList().range(CACHE_SHOP_TYPE_KEY, 0, -1);
if (!CollectionUtils.isEmpty(shopTypeCache)){
//如果存在 返回数据
List<ShopType> collect = shopTypeCache.stream().map((item) -> {
ShopType shopType1 = JSONUtil.toBean(item, ShopType.class);
return shopType1;
}).collect(Collectors.toList());
return Result.ok(collect);
}
// 如果不存在 去数据库查
List<ShopType> shopTypeList = lambdaQuery().orderByAsc(ShopType::getSort).list();
if (CollectionUtils.isEmpty(shopTypeList)){
return Result.fail("店铺分类信息为空");
}
// 将对象转换成json
List<String> stringList = shopTypeList.stream().map((item) -> {
String jsonShopType = JSONUtil.toJsonStr(item);
return jsonShopType;
}).collect(Collectors.toList());
//保存到redis
stringRedisTemplate.opsForList().leftPushAll(CACHE_SHOP_TYPE_KEY,stringList);
stringRedisTemplate.expire(CACHE_SHOP_TYPE_KEY,2400, TimeUnit.MINUTES);
return Result.ok(shopTypeList);
}

