最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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分布式的評論 (共 條)

分享到微博請遵守國家法律
孝昌县| 金山区| 茂名市| 元朗区| 竹山县| 克拉玛依市| 临夏县| 肃宁县| 神农架林区| 格尔木市| 高淳县| 三江| 桂平市| 特克斯县| 龙南县| 泰顺县| 常德市| 东山县| 泾川县| 顺昌县| 万载县| 天台县| 平邑县| 克山县| 桓台县| 上林县| 临澧县| 武义县| 维西| 美姑县| 得荣县| 扎囊县| 右玉县| 镇平县| 泉州市| 宽甸| 湖北省| 清镇市| 神农架林区| 雷山县| 潢川县|