五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

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

2023-02-22 15:49 作者:給小爺哼一個  | 我要投稿

P37作業(yè)(解決緩存穿透版):

@Override
public Result queryShopType() {
    String key = CACHE_SHOP_TYPE_KEY;
    // 1.查詢redis緩存
    List<String> typeJson = stringRedisTemplate.opsForList().range(key, 0, -1);
    // 2.判斷是否命中
    if (CollectionUtil.isNotEmpty(typeJson)) {
        // 2.0 如果為空對象(防止緩存穿透時存入的空對象)
        if (StrUtil.isBlank(typeJson.get(0))) {
            return Result.fail("商品分類信息為空!");
        }
        // 2.1 命中則轉換List<String> -> List<ShopType> 并返回、
        List<ShopType> typeList = new ArrayList<>();
        for (String jsonString : typeJson) {
            ShopType shopType = JSONUtil.toBean(jsonString, ShopType.class);
            typeList.add(shopType);
        }
        return Result.ok(typeList);
    }
    // 3. 未命中,查詢數(shù)據(jù)庫
    List<ShopType> typeList = query().orderByAsc("sort").list();
    // 3.1 數(shù)據(jù)庫中不存在
    if (CollectionUtil.isEmpty(typeList)) {
        // 添加空對象到redis,解決緩存穿透
        stringRedisTemplate.opsForList().rightPushAll(key, CollectionUtil.newArrayList(""));
        stringRedisTemplate.expire(key,CACHE_NULL_TTL,TimeUnit.MINUTES);
        // 返回錯誤
        return Result.fail("商品分類信息為空!");
    }
    // 3.2 數(shù)據(jù)庫中存在,轉換List<ShopType> -> List<String> 類型
    List<String> shopTypeList = new ArrayList<>();
    for (ShopType shopType : typeList) {
        String jsonStr = JSONUtil.toJsonStr(shopType);
        shopTypeList.add(jsonStr);
    }
    // 4.寫入redis緩存, 有順序只能RPUSH
    stringRedisTemplate.opsForList().rightPushAll(key, shopTypeList);
    // 5. 返回
    return Result.ok(typeList);
}


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

分享到微博請遵守國家法律
杨浦区| 潮安县| 山阳县| 华亭县| 肥东县| 德清县| 尚志市| 行唐县| 合作市| 伊宁县| 鹤峰县| 鸡东县| 镇沅| 鲁甸县| 大姚县| 衡山县| 盱眙县| 若羌县| 西华县| 罗城| 金溪县| 陵水| 资溪县| 新野县| 隆尧县| 云梦县| 贵州省| 锡林郭勒盟| 阿勒泰市| 沙洋县| 肃南| 印江| 连云港市| 拉孜县| 巴青县| 白城市| 宜城市| 富民县| 塔城市| 平乡县| 惠水县|