清除Redis中未設定過期時間的key

2021-09-23 20:37:41 字數 772 閱讀 7698

線上redis有一些歷史遺留的未設定過期時間的key,導致redis空間占用較多,dba告警後要我們自己清除,於是我寫了乙個指令碼在不影響線上服務的情況下清除(使用keys命令會導致請求hang住)

import sys

import redis

import os

pool = redis.connectionpool(host = "host_name",password = "pass_word",port = 6379)

r = redis.strictredis(connection_pool = pool)

match = sys.ar**[1]+"*"

print(match)

count = 10000

for key in r.scan_iter(match = match,count = count):

time = r.ttl(key)

if time==-1:

r.expire(key,1000)

print("set expire key:",key)

print(time)

這裡host_name和pass_word打個碼

sys.ar**[1]指傳入的第乙個引數,執行的時候就用python3 ***.py hello 就會自動掃瞄hello開頭的key,步進10000個,然後將其過期時間設為1000秒,過一會就自動過期了。

在業務低峰期的話步進可以設大點,這樣清的會比較快,我們為了清幾十萬個key花了半個多小時。

Redis 設定過期時間

redis 中有個設定時間過期的功能,即對儲存在 redis 資料庫中的值可以設定乙個過期時間。作為乙個快取資料庫,這是非常實用的。比如,一般專案中的 token 或是 cookie 資訊,尤其是簡訊驗證碼,都是有時間限制的,按照傳統的資料庫處理方式,一般都是自己判斷過期,這樣無疑會嚴重影響專案效能...

redis定時過期,清除

我這裡用的是redistemplate控制的redis 可以發現他的put方法 除了key和value 還會放乙個引數進去,就是他的失效時間 redistemplate.opsforvalue set key,value,seconds,timeunit.seconds 只要往redis存值的時候,...

redis的過期時間設定和過期刪除機制

redis的過期時間設定和過期刪除機制 expire 將鍵的生存時間設為 ttl 秒 pexpire 將鍵的生存時間設為 ttl 毫秒 expireat 將鍵的過期時間設為 timestamp 所指定的秒數時間戳 pexpireat 將鍵的過期時間設為 timestamp 所指定的毫秒數時間戳.二 ...