亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis 大key的幾種刪除方式

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

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

這次從代碼編寫的角度來(lái)舉例說(shuō)明下。

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

List

String key = "demo";
int length = jedis.llen("demo");
if (length > 1024) {
    int size = 100;
    int count = 0;
    do {
        //每次處理前100個(gè)
        // redis內(nèi)部也會(huì)判斷當(dāng)前傳遞的索引有沒(méi)有超過(guò)當(dāng)前的list的長(zhǎng)度
        // 可參閱 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個(gè)
    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的長(zhǎng)度
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的字段個(gè)數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • Redis的11種Web應(yīng)用場(chǎng)景簡(jiǎn)介

    Redis的11種Web應(yīng)用場(chǎng)景簡(jiǎn)介

    一些Redis原語(yǔ)命令比如LPUSH、LTRIM和 LREM等等能夠用來(lái)幫助開發(fā)者完成需要的任務(wù)——這些任務(wù)在傳統(tǒng)的數(shù)據(jù)庫(kù)存儲(chǔ)中非常困難或緩慢。這是一篇非常有用并且實(shí)際的文章。那么要如何在你的框架中完成這些任務(wù)呢?
    2015-09-09
  • windows環(huán)境下Redis+Spring緩存實(shí)例講解

    windows環(huán)境下Redis+Spring緩存實(shí)例講解

    這篇文章主要為大家詳細(xì)介紹了windows環(huán)境下Redis+Spring緩存實(shí)例教程,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 淺談Redis安全策略

    淺談Redis安全策略

    Redis 提供了諸多安全策略,比如為了保證數(shù)據(jù)安全,提供了設(shè)置密碼的功能。本文就詳細(xì)的介紹了一下Redis安全策略,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • Redis實(shí)現(xiàn)排名功能的示例代碼

    Redis實(shí)現(xiàn)排名功能的示例代碼

    本文主要介紹了Redis實(shí)現(xiàn)排名功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過(guò)程

    Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過(guò)程

    這篇文章主要介紹了Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過(guò)程,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于redis狀態(tài)監(jiān)控和性能調(diào)優(yōu)詳解

    關(guān)于redis狀態(tài)監(jiān)控和性能調(diào)優(yōu)詳解

    Redis是一種高級(jí)key-value數(shù)據(jù)庫(kù)。它跟memcached類似,不過(guò)數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。有字符串,鏈表、哈希、集合和有序集合5種。下面這篇文章主要給大家介紹了關(guān)于redis狀態(tài)監(jiān)控和性能調(diào)優(yōu)的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • 詳細(xì)聊聊Redis的過(guò)期策略

    詳細(xì)聊聊Redis的過(guò)期策略

    redis 過(guò)期策略是定期刪除+惰性刪除,下面這篇文章主要給大家介紹了關(guān)于Redis過(guò)期策略的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 解讀redis?slaveof命令執(zhí)行后為什么需要清庫(kù)重新同步

    解讀redis?slaveof命令執(zhí)行后為什么需要清庫(kù)重新同步

    這篇文章主要介紹了redis?slaveof命令執(zhí)行后為什么需要清庫(kù)重新同步,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • redis實(shí)現(xiàn)分布式的方法總結(jié)

    redis實(shí)現(xiàn)分布式的方法總結(jié)

    在本篇文章中小編給大家整理了關(guān)于redis分布式怎么做的具體內(nèi)容以及知識(shí)點(diǎn)總結(jié),有興趣的朋友們參考下。
    2019-06-06
  • Redis 緩存滿了如何解決

    Redis 緩存滿了如何解決

    Redis 緩存使用內(nèi)存來(lái)保存數(shù)據(jù),隨著需要緩存的數(shù)據(jù)量越來(lái)越大,有限的緩存空間不可避免地會(huì)被寫滿,本文主要介紹了Redis 緩存滿了如何解決,感興趣的可以了解一下
    2023-08-08

最新評(píng)論