redis批量刪除key (windows適用)

2021-07-27 03:23:09 字數 1076 閱讀 8200

工作中遇到乙個問題,redis中儲存了大量的key,而且沒有設定時效,其中很大一部分後來都沒用了,導致redis體積龐大,查詢緩慢。

伺服器版本為windows,網上搜尋到很多批量刪除的方法都是linux下的,幾番尋找,終於找到了在windows下批量刪除超大量key的方法。

首先貼一下linux下的方法:

redis-cli keys "*" | xargs redis-cli del  

//如果redis-cli沒有設定成系統變數,需要指定redis-cli的完整路徑

//如:/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del

選擇指定redis資料庫的方法,請自己尋找。

windows、linux下均試用的方法:

使用lua指令碼:

redis-cli eval "redis.call('del', unpack(redis.call('keys','*')))" 0

但這種處理方式,量大的情況下,lua函式unpack會出現問題,會報錯誤

(error) err

error running script (call

to f_e177a091510d969af3b388ee986dbe6658df6b57): user_script:1: too many results to unpack

解決方法:

一次性unpack太多會出問題,那就乾脆一次5000吧,這樣就不會有問題了,實測速度非常快哦。

redis-cli eval "local keys = redis.call('keys', argv[1]) for i=1,#keys,5000

do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys" 0 'value*'

參考內容:

redis批量刪除

redis中沒有批量刪除資料的指令,但可以借助linux的指令xargs來批量刪除 如果redis cli沒有設定成系統變數,需要指定redis cli的完整路徑,如 如果要指定 redis 資料庫訪問密碼,使用下面的命令 如果要訪問 redis 中特定的資料庫,使用下面的命令 刪除所有key,可以...

redis批量刪除keys

刪除 go mytopicindex開頭的key.刪除指定ip鏈結的 redis伺服器的keys redis cli h host keys xargs redis cli h host del 例如 redis cli h redis1.cloud.golomee.com keys go myto...

redis批量刪除Key

批量刪除key redis 中有刪除單個 key 的指令 del,但好像沒有批量刪除 key 的指令,不過我們可以借助 linux 的 xargs 指令來完成這個動作 redis cli keys xargs redis cli del 如果redis cli沒有設定成系統變數,需要指定redis ...