Redis 内存用完会怎样?
在某些極端情況下,軟件為了能正常運(yùn)行會(huì)做一些保護(hù)性的措施,比如運(yùn)行內(nèi)存超過最大值之后的處理,以及鍵值過期之后的處理等,都屬于此類問題,而專業(yè)而全面的回答這些問題恰好是一個(gè)工程師所具備的優(yōu)秀品質(zhì)。
我們本文的面試題是 Redis 內(nèi)存用完之后會(huì)怎么?
典型回答
Redis 的內(nèi)存用完指的是 Redis 的運(yùn)行內(nèi)存超過了 Redis 設(shè)置的最大內(nèi)存,此值可以通過 Redis 的配置文件 redis.conf 進(jìn)行設(shè)置,設(shè)置項(xiàng)為 maxmemory,我們可以使用 config get maxmemory 來查看設(shè)置的最大運(yùn)行內(nèi)存,如下所示:
127.0.0.1:6379> config get maxmemory 1) "maxmemory" 2) "0"當(dāng)此值為 0 時(shí),表示沒有內(nèi)存大小限制,直到耗盡機(jī)器中所有的內(nèi)存為止,這是 Redis 服務(wù)器端在 64 位操作系統(tǒng)下的默認(rèn)值。
小貼士:32 位操作系統(tǒng),默認(rèn)最大內(nèi)存值為 3GB。
當(dāng) Redis 的內(nèi)存用完之后就會(huì)觸發(fā) Redis 的內(nèi)存淘汰策略,執(zhí)行流程如下圖所示: 最大內(nèi)存的檢測源碼位于 server.c 中,核心代碼如下:
int processCommand(client *c) {// 最大內(nèi)存檢測if (server.maxmemory && !server.lua_timedout) {int out_of_me總結(jié)
以上是生活随笔為你收集整理的Redis 内存用完会怎样?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 性能优化 分布式
- 下一篇: 图解|查找数组中最大值的5种方法!