黑马程序员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); }