最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis 大key的幾種刪除方式

 更新時間:2025年03月26日 09:34:44   作者:csjane1079  
大key刪除直接調(diào)用 del 命令刪除key,容易造成請求被阻塞,本文主要介紹了Redis 大key的幾種刪除方式,具有一定的參考價值,感興趣的可以了解一下

在前面的文章 Redis刪除大key時為什么會阻塞中,有說到,不應(yīng)該直接調(diào)用 del 命令刪除key,容易造成請求被阻塞,那應(yīng)該如何來處理呢?

這次從代碼編寫的角度來舉例說明下。

在Redis中,有幾個比較特殊的結(jié)構(gòu)String,List、Hash、Set、ZSet, 從Redis刪除大key時為什么會阻塞中文章可以知道,不能直接del (除了string),而應(yīng)該使用 scan的方式,而每一個類型也都有自己的scan 方式。接下來以 Java Jedis 為例。

List

String key = "demo";
int length = jedis.llen("demo");
if (length > 1024) {
    int size = 100;
    int count = 0;
    do {
        //每次處理前100個
        // redis內(nèi)部也會判斷當(dāng)前傳遞的索引有沒有超過當(dāng)前的list的長度
        // 可參閱 ltrimCommand
        jedis.ltrim(key, 0, size);
        count += size;
    }
        while (count < length);
}
jedis.del(key);

Set

String key = "demo";

long length = jedis.scard(key);
if (length > 1024) {
    //每次遍歷100個
    ScanParams scanParams = new ScanParams().count(100);
    // 傳遞的游標(biāo)
    java.lang.String cursor = "0";
    ScanResult<String> sscan;
    do {
        //傳遞 scan的參數(shù)
        sscan = jedis.sscan(key, cursor, scanParams);
        if (!CollectionUtils.isEmpty(sscan.getResult())) {
            // 遍歷返回的結(jié)果,依次刪除
            sscan.getResult().stream().forEach(member -> {
                jedis.srem(key, member);
            });
        }
        // 傳入下次遍歷的游標(biāo)
        cursor = sscan.getCursor();
    } while (!sscan.isCompleteIteration());
}
jedis.del(key);

ZSet

String key = "demo";
// 獲取zset的長度
long length = jedis.zcard(key);
if (length > 1024) {
    int size = SIZE;
    int count = 0;
    do {
        // 刪除指定的集合
        jedis.zremrangeByRank(key, 0, size);
        count += size;
    }
    while (count < length);
}
jedis.del(key);

Hash

String key = "demo";
// 獲取Hash的字段個數(shù)
long length = jedis.hlen(key);
if (length > THROLD) {
    ScanParams scanParams = new ScanParams();
    // 遍歷大小
    scanParams.count(SIZE);
    // 匹配哪些字段
    scanParams.match("*");
    ScanResult<Map.Entry<String, String>> result;
    java.lang.String cursor = "0";
    do {
        // 遍歷字段
        result = jedis.hscan(key, cursor, scanParams);
        if (!CollectionUtils.isEmpty(result.getResult())) {
            // 刪除指定的字段
            result.getResult().stream().forEach(x -> {
                jedis.hdel(key, x.getKey());
            });
        }
        cursor = result.getCursor();
    } while (!result.isCompleteIteration());
}
jedis.del(key);

到此這篇關(guān)于Redis 大key的幾種刪除方式的文章就介紹到這了,更多相關(guān)Redis 大key刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Redis類型type與編碼encoding原理及使用示例

    Redis類型type與編碼encoding原理及使用示例

    這篇文章主要為大家介紹了Redis類型type與編碼encoding原理及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • redis restore 命令的用法實例詳解

    redis restore 命令的用法實例詳解

    Redis的RESTORE命令用于將DUMP生成的序列化數(shù)據(jù)恢復(fù)為鍵值,適用于數(shù)據(jù)遷移、備份恢復(fù)和跨實例同步,本文介紹redis restore 命令的用法,感興趣的朋友一起看看吧
    2025-02-02
  • 深入淺析Redis 集群伸縮原理

    深入淺析Redis 集群伸縮原理

    Redis 集群提供了靈活的節(jié)點擴(kuò)容和收縮方案。在不影響集群對外服務(wù)的情況下,可以為集群添加節(jié)點進(jìn)行擴(kuò)容,也可以下線部分節(jié)點進(jìn)行縮容,接下來通過本文給大家分享Redis 集群伸縮原理,感興趣的朋友一起看看吧
    2021-05-05
  • Redis命令使用技巧之Keys的相關(guān)操作

    Redis命令使用技巧之Keys的相關(guān)操作

    Redis KEYS命令用于搜索具有匹配模式的鍵。下面這篇文章主要給大家介紹了關(guān)于Redis命令使用技巧之Keys的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Windows下Redis的安裝使用圖解

    Windows下Redis的安裝使用圖解

    Redis是一個key-value存儲系統(tǒng)。Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲的不足,在部分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。這篇文章小編為大家分享了在Windows下進(jìn)行安裝和使用Redis的技巧。
    2015-09-09
  • Redis哨兵模式與主從架構(gòu)對比分析

    Redis哨兵模式與主從架構(gòu)對比分析

    Redis哨兵模式在主從架構(gòu)基礎(chǔ)上增強(qiáng)高可用性,通過自動故障切換和監(jiān)控實現(xiàn)無人值守恢復(fù),但部署復(fù)雜且無法突破單機(jī)內(nèi)存限制,適用于讀多寫少、高可用需求的場景
    2025-08-08
  • Redis 內(nèi)存碎片原因及清理

    Redis 內(nèi)存碎片原因及清理

    內(nèi)存碎片是指在內(nèi)存分配的時候,產(chǎn)生的不能重復(fù)利用的空間,本文主要介紹了Redis 內(nèi)存碎片原因及清理,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Redis常見數(shù)據(jù)類型List列表使用詳解

    Redis常見數(shù)據(jù)類型List列表使用詳解

    Redis的List是一種有序的字符串集合,支持兩端高效插入和刪除,適用于隊列和棧,這篇文章主要介紹了Redis常見數(shù)據(jù)類型List列表使用的相關(guān)資料,需要的朋友可以參考下
    2024-12-12
  • 基于redis實現(xiàn)分布式鎖的原理與方法

    基于redis實現(xiàn)分布式鎖的原理與方法

    這篇文章主要給大家介紹了基于redis實現(xiàn)分布式鎖的原理與方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • redis過期回調(diào)功能實現(xiàn)示例

    redis過期回調(diào)功能實現(xiàn)示例

    Redis提供了一種過期回調(diào)的機(jī)制,可以在某個鍵過期時觸發(fā)一個回調(diào)函數(shù),本文就來介紹一下redis過期回調(diào)功能實現(xiàn)示例,感興趣的可以了解一下
    2023-09-09

最新評論

砚山县| 犍为县| 年辖:市辖区| 启东市| 景洪市| 岱山县| 宣化县| 甘谷县| 英山县| 阜平县| 慈溪市| 岳阳市| 威远县| 东源县| 台南县| 桐柏县| 武平县| 宝丰县| 和平区| 东丽区| 舟曲县| 会理县| 韶关市| 上杭县| 体育| 临沧市| 宜丰县| 宁陕县| 石河子市| 民丰县| 黑水县| 枣强县| 始兴县| 绥江县| 青川县| 虹口区| 黎川县| 百色市| 延吉市| 濉溪县| 泸定县|