redis的過期策略
redis有兩種過期策略壳嚎,定期刪除和惰性刪除
定期刪除:redis每個100ms隨機抽取一些設置了過期時間的key规求,檢查其是否過期稿壁,如果過期就刪除。
惰性刪除:在獲取某個key的時候奥秆,redis檢查一下逊彭,如果該key設置了過期時間則判斷該過期時間是否已經過期,如果過期了就直接刪掉并不返回任何東西构订。
redis的內存淘汰機制
當redis內存快耗盡時侮叮,redis會啟動內存淘汰機制,將部分key清掉以騰出內存悼瘾。
redis提供6中數(shù)據淘汰策略签赃,可在redis.conf中配置:maxmemory-policy noeviction
noeviction:禁止驅逐數(shù)據谷异。默認配置都是這個。當內存使用達到閥值的時候锦聊,所有引起申請內存的命令都會報錯。
volatile-lru:從設置了過期時間的數(shù)據集中挑選最近最少使用的數(shù)據淘汰箩绍。
volatile-ttl:從已設置了過期時間的數(shù)據集中挑選即將要過期的數(shù)據淘汰孔庭。
volatile-random:從已設置了過期時間的數(shù)據集中任意選擇數(shù)據淘汰。
allkeys-lru:從數(shù)據集中挑選最近最少使用的數(shù)據淘汰材蛛。
allkeys-random:從數(shù)據集中任意選擇數(shù)據淘汰圆到。
當Redis確定好要驅逐某個鍵值對后,會刪除這個數(shù)據卑吭,并將這個數(shù)據變更消息同步到本地和從機芽淡。