Redis資料已經過期了,為什麼還佔用記憶體?
問題1:剛剛向redis中插入的資料怎麼沒了?
問題2:我插入redis的資料應該過期了,為什麼還佔用記憶體?
如果有以上問題說明你還不瞭解Redis的記憶體淘汰機制
問題1的解決:設定redis中key的過期時間
redis> SET cache_page "www.google.com"
OK
redis> EXPIRE cache_page 30 # 設定過期時間為 30 秒
(integer) 1
我們set key的時候,都可以給一個expire time,就是過期時間,指定這個key比如說只能存活1個小時?10分鐘?這個很有用,我們自己可以指定快取到期就失效。
如果假設你設定一個一批key只能存活1個小時,那麼接下來1小時後,redis是怎麼對這批key進行刪除的?
1.redis的過期策略
redis的過期策略:定期刪除+惰性刪除
- 定期刪除:redis預設是每隔100ms就隨機抽取一些設定了過期時間的key,檢查其是否過期,如果過期就刪除。
- 惰性刪除:在你獲取某個key的時候,redis會檢查一下 ,這個key如果設定了過期時間那麼是否過期了?如果過期了此時就會刪除,不會給你返回任何東西
可是有了定期刪除和惰性刪除就可以保證過期的key真的被刪掉嗎?
當然不能,問題2就是一個明顯的例子
問題2的解決:設定記憶體淘汰機制
2.redis中的記憶體淘汰機制
如果redis的記憶體佔用過多的時候,此時會進行記憶體淘汰,有如下一些策略:
1)noeviction:對於寫請求不再提供服務,直接返回錯誤
2)allkeys-lru:從鍵空間中,移除最近最少使用的key(這個是最常用的)
3)allkeys-random:從所有key中隨機淘汰資料
4)volatile-lru:從設定了過期時間的鍵空間中,移除最近最少使用的key(這個一般不太合適)
5)volatile-random:從設定了過期時間的鍵空間中,隨機移除某個key
6)volatile-ttl:從設定了過期時間的鍵空間中,有更早過期時間的key優先移除
配置
#獲取:
127.0.0.1:6379> config get maxmemory-policy
#設定:
maxmemory-policy allkeys-lru(通過redis.conf檔案)
#修改:
127.0.0.1:6379> config set maxmemory-policy allkeys-lru
相關文章
- Redis的資料被刪除,佔用記憶體咋還那麼大?Redis記憶體
- MongoDB 如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- MongoDB如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- 如何檢視MySQL資料庫佔多大記憶體,佔用太多記憶體怎麼辦?MySql資料庫記憶體
- 電腦記憶體佔用過高怎麼辦 電腦記憶體佔用過高解決方法記憶體
- ApsaraDB for Redis之記憶體去哪兒了(一)資料過期與逐出策略Redis記憶體
- Redis 過期時間與記憶體管理Redis記憶體
- [Redis]過期刪除和記憶體淘汰Redis記憶體
- 記憶體分頁不就夠了?為什麼還要分段?還有段頁式?記憶體
- Java記憶體模型是什麼,為什麼要有Java記憶體模型,Java記憶體模型解決了什麼問題?Java記憶體模型
- 資源記憶體佔用記憶體
- 隨身碟資料看不見了,卻還佔用著記憶體空間如何處理記憶體
- Win10記憶體佔用過多怎麼辦 win10清理記憶體佔用的方法Win10記憶體
- 面試官:Redis 過期刪除策略和記憶體淘汰策略有什麼區別?面試Redis記憶體
- 為什麼JVM指定-Xmx引數後佔用記憶體會變少?JVM記憶體
- filebeat實踐-記憶體佔用-最大記憶體佔用記憶體
- 為什麼說列舉更佔記憶體,列舉原理是什麼?記憶體
- 作為一款記憶體資料庫,為什麼斷電後Redis資料不會丟失記憶體資料庫Redis
- win10記憶體佔用過高程式沒多少怎麼辦 win10記憶體佔用過高的方法Win10記憶體
- 已經有 Atom 了,為什麼還要有 Atom-IDE ?IDE
- Redis 實戰 —— 12. 降低記憶體佔用Redis記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- SQL Server資料庫佔用記憶體過多的解決方法SQLServer資料庫記憶體
- Redis的記憶體回收機制和記憶體過期淘汰策略詳解Redis記憶體
- 選擇合適Redis資料結構,減少80%的記憶體佔用Redis資料結構記憶體
- win10如何降低chrome記憶體佔用_win10電腦chrome記憶體佔用過高怎麼辦Win10Chrome記憶體
- Redis Quicklist 竟讓記憶體佔用狂降50%?RedisUI記憶體
- win10一開機記憶體佔用60%什麼原因 win10開機記憶體佔用過高達到60%如何解決Win10記憶體
- 解決SQL Server資料庫佔用記憶體過多的問題SQLServer資料庫記憶體
- Redis 的資料過期了就會馬上刪除麼?Redis
- oracle RDBMS Kernel Executable 佔用記憶體過高Oracle記憶體
- 【Redis】過期鍵刪除策略和記憶體淘汰策略Redis記憶體
- win10電腦記憶體過高怎麼辦 win10記憶體佔用過高的方法Win10記憶體
- 桌面視窗管理器佔用記憶體過高怎麼辦 電腦莫名其妙記憶體佔用很高記憶體
- Redis(六)--- Redis過期策略、記憶體淘汰機制、訊息及事物Redis記憶體
- redis的記憶體滿了之後,redis如何回收記憶體嗎Redis記憶體
- 為什麼win10系統microsoft modules installer worker佔用記憶體較高Win10ROS記憶體
- 面試官:Redis 記憶體資料滿了,會當機嗎?面試Redis記憶體