@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Resource
StringRedisTemplate stringRedisTemplate;
@Override
public Result queryTypeList() {
//CACHE_SHOP_TYPE_KEY= 是字符串 "cache:shopType:" ,0和-1 表示从第一个取,直到倒数第一个。
List<String> range = stringRedisTemplate.opsForList().range(CACHE_SHOP_TYPE_KEY, 0, -1);
//判断缓存中是否存在,存在先通过JSONUtil工具将json转化成bean,再传给前端
if (range.size()!=0){
ArrayList<ShopType> shopTypeList=new ArrayList<>();
for (String s:range) {
shopTypeList.add(JSONUtil.toBean(s, ShopType.class));
}
//返回是需要返回存储bean的List,而不是存储string的List
return Result.ok(shopTypeList);
}
//从数据库中查找 找出的都是bean对象的list
List<ShopType> sortList = query().orderByDesc("sort").list();
//判断缓存中是否存在,不存在直接返回错误
if(sortList.size()==0){
return Result.fail("店铺分类查询失败");
}
//判断存在后,通过JSONUtil工具将bean转化成json
ArrayList<String> stringList=new ArrayList<>();
for(ShopType shopType:sortList){
String s = JSONUtil.toJsonStr(shopType);
stringList.add(s);
}
//放入缓存中 设置有效期
stringRedisTemplate.opsForList().leftPushAll(CACHE_SHOP_TYPE_KEY,stringList);
stringRedisTemplate.expire(CACHE_SHOP_TYPE_KEY, CACHE_SHOP_TYPE_TTL, TimeUnit.HOURS);
//返回List<Bean>
return Result.ok(sortList);
}
}
黑马 Redis P37 List 方法
最新推荐文章于 2024-09-05 23:32:39 发布