1.我们将从上次结论redis模型
是否命中缓存:
1.缓存检索
1-1 根据 检索 list数据类型的key 获取list数据类型 数据个数进行判断 命中
获取list 中存储的商铺类型信息(stream + jsonUtil.tobean() 转换为商铺类);
if (!(size == null || size == 0)) {
List<String> cacheShopTypes = stringRedisTemplate.opsForList().range(ShopTypeFiledsUtils.CACHE_SHOPTYPE_LIST, BigDecimal.ZERO.longValue(), size);
List<ShopType> cacheShopType = cacheShopTypes.stream().map(shopTpye -> JSONUtil.toBean(shopTpye, ShopType.class)).collect(Collectors.toList());
return Result.ok(cacheShopType);
}
1.缓存检索 未命中
1-2 数据库检索 商铺类型list (不存在 抛404 ) 存在 同理 (stream + jsonUtil.toJsonStr()
转换为商铺json 对象 redis 存入应用层缓存。返回信息。
List<ShopType> typeList = query().orderByAsc("sort").list();
if (CollectionUtils.isEmpty(typeList)) {
return Result.fail("获取商铺类型不存在");
}
List<String> shopListByQuery = typeList.stream().map(shopType -> JSONUtil.toJsonStr(shopType)).collect(Collectors.toList());
stringRedisTemplate.opsForList().leftPushAll(ShopTypeFiledsUtils.CACHE_SHOPTYPE_LIST, shopListByQuery);
stringRedisTemplate.expire(ShopTypeFiledsUtils.CACHE_SHOPTYPE_LIST, ShopTypeFiledsUtils.CACHE_SHOPTYPE_LIST_TTL, TimeUnit.MINUTES);
return Result.ok(typeList);