黑馬程序員Redis入門到實戰(zhàn)教程,深度透析redis底層原理+redis分布式

P37作業(yè):基于value為String實現(xiàn)的(業(yè)務(wù)邏輯都放在了Service中),僅供參考
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
??@Resource
??private StringRedisTemplate stringRedisTemplate;
??@Override
??public Result queryShopType() {
????// 1.從redis查詢商鋪
????String key = "cache:shop_type";
????String shopTypeJson = stringRedisTemplate.opsForValue().get(key);
????// 2.判斷是否存在
????if (StrUtil.isNotBlank(shopTypeJson)) {
??????// 3.緩存 命中
??????List<ShopType> typeList = JSONUtil.toList(shopTypeJson, ShopType.class);
??????return Result.ok(typeList);
????}
????// 4.緩存 未命中 根據(jù)id查詢數(shù)據(jù)庫
????List<ShopType> typeList = query().orderByAsc("sort").list();
????// 5.判斷商鋪是否存在
????if (typeList == null) {
??????// 6.不存在,給出錯誤信息
??????return Result.fail("店鋪類型不存在!");
????}
????// 7.存在,將商鋪信息數(shù)據(jù)寫入緩存
????stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(typeList));
????stringRedisTemplate.expire(key, LOGIN_USER_TTL, TimeUnit.MINUTES);
????// 8.返回商鋪信息
????return Result.ok(typeList);
??}
}