黑馬程序員Redis入門(mén)到實(shí)戰(zhàn)教程,深度透析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中不存在,查詢數(shù)據(jù)庫(kù) List<ShopType> list = query().orderByAsc("sort").list(); if(list == null) { // 數(shù)據(jù)庫(kù)中不存在 return Result.fail("商戶類型列表不存在??!"); } // 數(shù)據(jù)庫(kù)中存在,放入redis緩存并返回 // List<ShopType>轉(zhuǎn)為L(zhǎng)ist<String>存入redis List<String> strList = list.stream().map(JSONUtil::toJsonStr).collect(Collectors.toList()); stringRedisTemplate.opsForList().leftPushAll(key,strList); return Result.ok(list); } }
標(biāo)簽: