這篇文章主要介紹redis刪數(shù)據(jù)的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、東西湖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東西湖等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Redis常用的刪除策略有以下三種:
1.被動刪除(惰性刪除):當(dāng)讀/寫一個已經(jīng)過期的Key時,會觸發(fā)惰性刪除策略,直接刪除掉這個Key;
2.主動刪除(定期刪除):Redis會定期巡檢,來清理過期Key;
3.當(dāng)內(nèi)存達(dá)到maxmemory配置時候,會觸發(fā)Key的刪除操作;
主動刪除
在 Redis 中,常規(guī)操作由 redis.c/serverCron 實(shí)現(xiàn),它主要執(zhí)行以下操作:
1.更新服務(wù)器的各類統(tǒng)計(jì)信息,比如時間、內(nèi)存占用、數(shù)據(jù)庫占用情況等。
2.清理數(shù)據(jù)庫中的過期鍵值對。
3.對不合理的數(shù)據(jù)庫進(jìn)行大小調(diào)整。
4.關(guān)閉和清理連接失效的客戶端。
5.嘗試進(jìn)行 AOF 或 RDB 持久化操作。
6.如果服務(wù)器是主節(jié)點(diǎn)的話,對附屬節(jié)點(diǎn)進(jìn)行定期同步。
如果處于集群模式的話,對集群進(jìn)行定期同步和連接測試。
Redis 將 serverCron 作為時間事件來運(yùn)行,從而確保它每隔一段時間就會自動運(yùn)行一次, 又因?yàn)?serverCron 需要在 Redis 服務(wù)器運(yùn)行期間一直定期運(yùn)行, 所以它是一個循環(huán)時間事件:serverCron 會一直定期執(zhí)行,直到服務(wù)器關(guān)閉為止。
總結(jié)
如果Redis中每天過期大量Key(比如幾千萬),那么必須得考慮過期Key的清理:
增加Redis主動清理的頻率(通過調(diào)大hz參數(shù))
手動清理過期Key,最簡單的方法是進(jìn)行scan操作,scan操作會觸發(fā)第一種被動刪除,scan操作時候別忘了加count;
dbsize命令返回的Key數(shù)量,包含了過期Key
randomkey命令返回的Key,不包含過期Key
scan命令返回的Key,包含過期Key
info命令返回的# Keyspace
db6:keys=1034937352,expires=994731489,avg_ttl=507838502
keys對應(yīng)的Key數(shù)量等同于dbsize
expires指的是設(shè)置了過期時間的Key數(shù)量
avg_ttl指設(shè)置了過期時間的Key的平均過期時間(單位:毫秒)
以上是redis刪數(shù)據(jù)的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!