public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public Result getTypeList() {
String key= RedisConstants.CACHE_SHOP_TYPE;
// 1.从缓存中获取商铺分类信息 range:获取一个指定范围的值
List<String> tyepList = stringRedisTemplate.opsForList().range(key, 0, -1);
// 2.判断缓存中是否存在
if (Objects.requireNonNull(tyepList).size() != 0) {
// 存在直接返回
List<ShopType> types = new ArrayList<>();
for (String type : tyepList) {
ShopType shopType = JSONUtil.toBean(type, ShopType.class);
types.add(shopType);
}
return Result.ok(types);
}
// 不存在则查询数据
List<ShopType> shopTypeList = this.query().orderByAsc("sort").list();
if (shopTypeList == null) {
return Result.fail("数据不存在!");
}
// 将查询到数据添加到缓存中
assert shopTypeList != null;
for (ShopType type : shopTypeList) {
// rightPush向一个集合右边添加数据
stringRedisTemplate.opsForList().rightPush(key,JSONUtil.toJsonStr(type));
}
// 返回数据
return Result.ok(shopTypeList);
}
}
[Redis]黑马点评-商铺类型缓存使用List(练习题)
于 2023-05-07 16:06:16 首次发布