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

Redis通過scan查找不過期的 key(方法詳解)

 更新時(shí)間:2021年08月18日 15:28:51   作者:__Yoon  
SCAN 命令是一個(gè)基于游標(biāo)的迭代器,每次被調(diào)用之后, 都會(huì)向用戶返回一個(gè)新的游標(biāo), 用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù), 以此來延續(xù)之前的迭代過程,對(duì)Redis scan 查找 key相關(guān)知識(shí)感興趣的朋友一起看看吧

Redis Scan 命令用于迭代數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)鍵。

SCAN 返回一個(gè)包含兩個(gè)元素的數(shù)組, 第一個(gè)元素是用于進(jìn)行下一次迭代的新游標(biāo), 而第二個(gè)元素則是一個(gè)數(shù)組, 這個(gè)數(shù)組中包含了所有被迭代的元素。如果新游標(biāo)返回 0 表示迭代已結(jié)束。

相關(guān)命令:

SSCAN 命令用于迭代集合鍵中的元素。
HSCAN 命令用于迭代哈希鍵中的鍵值對(duì)。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成員和元素分值)。

# SCAN 命令是一個(gè)基于游標(biāo)的迭代器(cursor based iterator):SCAN 命令每次被調(diào)用之后,都會(huì)向用戶返回一個(gè)新的游標(biāo),用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù),以此來延續(xù)之前的迭代過程。
# 注意:當(dāng) SCAN 命令的游標(biāo)參數(shù)被設(shè)置為 0 時(shí),服務(wù)器將開始一次新的迭代,而當(dāng)服務(wù)器向用戶返回值為 0 的游標(biāo)時(shí),表示迭代已結(jié)束!

# vim redis_no_ttl_key.sh

#!/bin/bash
# Redis 通過 scan 找出不過期的 key
# SCAN 命令是一個(gè)基于游標(biāo)的迭代器(cursor based iterator):SCAN 命令每次被調(diào)用之后,都會(huì)向用戶返回一個(gè)新的游標(biāo),用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù),以此來延續(xù)之前的迭代過程。
# 注意:當(dāng) SCAN 命令的游標(biāo)參數(shù)被設(shè)置為 0 時(shí),服務(wù)器將開始一次新的迭代,而當(dāng)服務(wù)器向用戶返回值為 0 的游標(biāo)時(shí),表示迭代已結(jié)束!

db_ip=10.100.41.148       # redis 連接IP
db_port=6379              # redis 端口
password='IootCdgN05srE'  # redis 密碼
cursor=0                  # 第一次游標(biāo)
cnt=100                   # 每次迭代的數(shù)量
new_cursor=0              # 下一次游標(biāo)

redis-cli -c -h $db_ip -p $db_port -a $password scan $cursor count $cnt > scan_tmp_result
new_cursor=`sed -n '1p' scan_tmp_result`     # 獲取下一次游標(biāo)
sed -n '2,$p' scan_tmp_result > scan_result  # 獲取 key
cat scan_result |while read line             # 循環(huán)遍歷所有 key
do
    ttl_result=`redis-cli -c -h $db_ip -p $db_port -a $password ttl $line`  # 獲取key過期時(shí)間
    if [[ $ttl_result == -1 ]];then
    #if [ $ttl_result -eq -1 ];then          # 判斷過期時(shí)間,-1 是不過期
        echo $line >> no_ttl.log             # 追加到指定日志
    fi
done

while [ $cursor -ne $new_cursor ]            # 若游標(biāo)不為0,則證明沒有迭代完所有的key,繼續(xù)執(zhí)行,直至游標(biāo)為0
do
    redis-cli -c -h $db_ip -p $db_port -a $password scan $new_cursor count $cnt > scan_tmp_result
    new_cursor=`sed -n '1p' scan_tmp_result`
    sed -n '2,$p' scan_tmp_result > scan_result
    cat scan_result |while read line
    do
        ttl_result=`redis-cli -c -h $db_ip -p $db_port -a $password ttl $line`
        if [[ $ttl_result == -1 ]];then
        #if [ $ttl_result -eq -1 ];then
            echo $line >> no_ttl.log
        fi
    done
done
rm -rf scan_tmp_result
rm -rf scan_result

到此這篇關(guān)于Redis通過scan查找不過期的 key的文章就介紹到這了,更多相關(guān)Redis scan 查找 key內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何解決Redis緩存穿透(緩存空對(duì)象、布隆過濾器)

    如何解決Redis緩存穿透(緩存空對(duì)象、布隆過濾器)

    緩存穿透是一個(gè)常見的問題,它發(fā)生當(dāng)請(qǐng)求的數(shù)據(jù)既不在緩存中也不在數(shù)據(jù)庫(kù)中,文章通過一個(gè)查詢商品店鋪的案例,展示了如何結(jié)合這兩種方法來避免緩存穿透,首先利用布隆過濾器過濾掉不存在的id,對(duì)于誤判的情況,則采用緩存空對(duì)象的策略進(jìn)行補(bǔ)救
    2024-11-11
  • Redis如何存儲(chǔ)對(duì)象與集合示例詳解

    Redis如何存儲(chǔ)對(duì)象與集合示例詳解

    redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希類型)本文介紹了關(guān)于Redis是如何存儲(chǔ)對(duì)象與集合的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • Redis分布式鎖的7種實(shí)現(xiàn)

    Redis分布式鎖的7種實(shí)現(xiàn)

    這篇文章主要介紹了Redis分布式鎖的實(shí)現(xiàn)
    2022-04-04
  • Redis簡(jiǎn)單動(dòng)態(tài)字符串SDS的實(shí)現(xiàn)示例

    Redis簡(jiǎn)單動(dòng)態(tài)字符串SDS的實(shí)現(xiàn)示例

    Redis沒有直接復(fù)用C語言的字符串,而是新建了SDS,本文主要介紹了Redis簡(jiǎn)單動(dòng)態(tài)字符串SDS的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Redis如何部署哨兵

    Redis如何部署哨兵

    本文主要介紹了Redis如何部署哨兵,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 帶你輕松掌握Redis分布式鎖

    帶你輕松掌握Redis分布式鎖

    這篇文章主要介紹了帶你輕松掌握Redis分布式鎖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • redis實(shí)現(xiàn)分布式的方法總結(jié)

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

    在本篇文章中小編給大家整理了關(guān)于redis分布式怎么做的具體內(nèi)容以及知識(shí)點(diǎn)總結(jié),有興趣的朋友們參考下。
    2019-06-06
  • 高并發(fā)場(chǎng)景分析之redis+lua防重校驗(yàn)

    高并發(fā)場(chǎng)景分析之redis+lua防重校驗(yàn)

    這篇文章主要介紹了高并發(fā)場(chǎng)景分析之redis+lua防重校驗(yàn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 配置Redis序列化方式不生效問題及解決

    配置Redis序列化方式不生效問題及解決

    這篇文章主要介紹了配置Redis序列化方式不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解如何在YAML文件中配置Redis

    詳解如何在YAML文件中配置Redis

    在現(xiàn)代軟件開發(fā)中,配置文件是非常重要的一部分,其中,YAML(YAML Ain't Markup Language)是一種常用的配置文件格式,具有可讀性強(qiáng)、易于理解和編寫的特點(diǎn),在本篇文章中,我們將探討如何在YAML文件中配置Redis,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

兴化市| 淄博市| 蓝山县| 惠东县| 北流市| 丰台区| 吉林市| 团风县| 巧家县| 灵丘县| 桃江县| 新丰县| 天峻县| 青河县| 保亭| 乐东| 乳源| 同仁县| 游戏| 深泽县| 高尔夫| 黄陵县| 那坡县| 江门市| 孟州市| 阜新市| 改则县| 呼图壁县| 兴城市| 沙河市| 彭州市| 韶山市| 莱芜市| 凤台县| 西城区| 丹江口市| 嘉定区| 大城县| 武冈市| 苗栗县| 松溪县|