目錄
一、前言
二、需求
三、String實現
四、List實現
一、前言
這是黑馬點評實戰篇-商戶查詢緩存-0.3緩存練習題分析,練習給店鋪類型查詢業務添加緩存。這里我自己是通過String實現的,當然在網上查詢也能夠找到其他的實現方式。String實現我會展示自己寫的代碼(算簡單一點但是嚴格按照之前查詢店鋪緩存的來),List實現我會轉載我認為其他大佬寫的比較好的(實現起來會復雜一點)
二、需求
修改ShopTypeController中的queryTypeList方法,添加查詢緩存
三、String實現
將ShopTypeController改為如下圖所示:
在IShopTypeList中創建queryTypeList并加上注釋
進入實現類中實現queryTypeList方法(核心就是完成這個實現方法)
整個實現方法完成的效果如下圖:(記得注入StringRedisTemplate,在常量類中加上CACHE_SHOP_TYPE_KEY)
整個實現方法的參考代碼如下:
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {@Resourceprivate StringRedisTemplate stringRedisTemplate;/*** 查詢所有商鋪類型*/public Result queryTypeList() {//用String實現,opsForValue寫法//public static final String CACHE_SHOP_TYPE_KEY = "cache:shopType:";String key = CACHE_SHOP_TYPE_KEY;//1.從redis查詢商鋪類型緩存String shopTypeJson = stringRedisTemplate.opsForValue().get(key);//2.判斷是否存在if (StrUtil.isNotBlank(shopTypeJson)){//3.存在,直接返回List<ShopType> shopTypeList = JSONUtil.toList(shopTypeJson, ShopType.class);return Result.ok(shopTypeList);}//4.不存在,查詢數據庫 MybatisPlus的query()拿來用List<ShopType> shopTypeList = query().orderByAsc("sort").list();//5.數據庫中不存在,返回錯誤信息if (shopTypeList == null){return Result.fail("商鋪類型不存在!");}//6.數據庫中存在,寫入redisString jsonStr = JSONUtil.toJsonStr(shopTypeList);stringRedisTemplate.opsForValue().set(key, jsonStr);//7.返回return Result.ok(shopTypeList);}
}
啟動服務測試觀察DataGrip效果如下:
四、List實現
這里我轉載其他大佬的博客,大家自行了解
【黑馬點評】實戰篇-作業-店鋪類型緩存-List實現_黑馬點評作業-CSDN博客