工作中遇到乙個問題,redis中儲存了大量的key,而且沒有設定時效,其中很大一部分後來都沒用了,導致redis體積龐大,查詢緩慢。
伺服器版本為windows,網上搜尋到很多批量刪除的方法都是linux下的,幾番尋找,終於找到了在windows下批量刪除超大量key的方法。
首先貼一下linux下的方法:
選擇指定redis資料庫的方法,請自己尋找。redis-cli keys "*" | xargs redis-cli del
//如果redis-cli沒有設定成系統變數,需要指定redis-cli的完整路徑
//如:/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del
windows、linux下均試用的方法:
使用lua指令碼:
但這種處理方式,量大的情況下,lua函式unpack會出現問題,會報錯誤redis-cli eval "redis.call('del', unpack(redis.call('keys','*')))" 0
解決方法:(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 ...