黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式

P37-基于Redis缓存的商户类型列表查询
@Service public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService { @Resource StringRedisTemplate stringRedisTemplate; @Override public Result queryTypeList() { String key = RedisConstants.SHOPTYPE_LIST_KEY; List<String> listCache = stringRedisTemplate.opsForList().range(key, 0, -1); // System.out.println(listCache); if(listCache != null && !listCache.isEmpty()) { // redis缓存中存在 // list<string> -> list<shoptype> List<ShopType> shopTypes = listCache.stream() .map(str -> (ShopType)JSONUtil.toBean(str, ShopType.class, true)) .sorted(Comparator.comparingInt(ShopType::getSort)) .collect(Collectors.toList()); return Result.ok(shopTypes); } // redis中不存在,查询数据库 List<ShopType> list = query().orderByAsc("sort").list(); if(list == null) { // 数据库中不存在 return Result.fail("商户类型列表不存在!!"); } // 数据库中存在,放入redis缓存并返回 // List<ShopType>转为List<String>存入redis List<String> strList = list.stream().map(JSONUtil::toJsonStr).collect(Collectors.toList()); stringRedisTemplate.opsForList().leftPushAll(key,strList); return Result.ok(list); } }