Redis 數據庫內存數據滿了,會宕機嗎?答案是:不會讓它出現存滿的狀況,在使用Redis的時候咱們要配置Redis能使用的最大的內存大小,存到必定容量的時候還有Redis的內存淘汰策略呢,還有LRU算法進行淘汰,等等。redis
咱們知道Redis是基於內存的key-value數據庫,由於系統的內存大小有限,因此咱們在使用Redis的時候能夠配置Redis能使用的最大的內存大小。算法
經過在Redis安裝目錄下面的redis.conf配置文件中添加如下配置設置內存大小數據庫
Redis支持運行時經過命令動態修改內存大小dom
既然能夠設置Redis最大佔用內存大小,那麼配置的內存就有用完的時候。那在內存用完的時候,還繼續往Redis裏面添加數據不就沒內存可用了嗎?編輯器
實際上Redis定義了幾種策略用來處理這種狀況:操作系統
noeviction(默認策略):對於寫請求再也不提供服務,直接返回錯誤(DEL請求和部分特殊請求除外)3d
allkeys-lru:從全部key中使用LRU算法進行淘汰blog
volatile-lru:從設置了過時時間的key中使用LRU算法進行淘汰內存
allkeys-random:從全部key中隨機淘汰數據get
volatile-random:從設置了過時時間的key中隨機淘汰
volatile-ttl:在設置了過時時間的key中,根據key的過時時間進行淘汰,越早過時的越優先被淘汰
當使用volatile-lru、volatile-random、volatile-ttl這三種策略時,若是沒有key能夠被淘汰,則和noeviction同樣返回錯誤
獲取當前內存淘汰策略:
127.0.0.1:6379> config get maxmemory-policy
經過配置文件設置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
經過命令修改淘汰策略:
127.0.0.1:6379> config set maxmemory-policy allkeys-lru`