這篇文章主要介紹了php使用redis內(nèi)存不足如何解決的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇php使用redis內(nèi)存不足如何解決文章都會有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供廣靈網(wǎng)站建設(shè)、廣靈做網(wǎng)站、廣靈網(wǎng)站設(shè)計、廣靈網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、廣靈企業(yè)網(wǎng)站模板建站服務(wù),十余年廣靈做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
php使用redis內(nèi)存不足的解決辦法:1、通過配置文件或者命令設(shè)置Redis最大占用內(nèi)存大小為100M;2、獲取當(dāng)前內(nèi)存淘汰策略;3、通過“config set maxmemory-policy allkeys-lru”命令修改淘汰策略即可。
我們知道Redis是基于內(nèi)存的key-value數(shù)據(jù)庫,因為系統(tǒng)的內(nèi)存大小有限,所以我們在使用Redis的時候可以配置Redis能使用的最大的內(nèi)存大小。
通過在Redis安裝目錄下面的redis.conf配置文件中添加以下配置設(shè)置內(nèi)存大小
//設(shè)置Redis最大占用內(nèi)存大小為100M maxmemory 100mb
redis的配置文件不一定使用的是安裝目錄下面的redis.conf文件,啟動redis服務(wù)的時候是可以傳一個參數(shù)指定redis的配置文件的
Redis支持運(yùn)行時通過命令動態(tài)修改內(nèi)存大小
//設(shè)置Redis最大占用內(nèi)存大小為100M 127.0.0.1:6379> config set maxmemory 100mb //獲取設(shè)置的Redis能使用的最大內(nèi)存大小 127.0.0.1:6379> config get maxmemory
如果不設(shè)置最大內(nèi)存大小或者設(shè)置最大內(nèi)存大小為0,在64位操作系統(tǒng)下不限制內(nèi)存大小,在32位操作系統(tǒng)下最多使用3GB內(nèi)存
既然可以設(shè)置Redis最大占用內(nèi)存大小,那么配置的內(nèi)存就有用完的時候。那在內(nèi)存用完的時候,還繼續(xù)往Redis里面添加數(shù)據(jù)不就沒內(nèi)存可用了嗎?實際上Redis定義了幾種策略用來處理這種情況:noeviction(默認(rèn)策略):對于寫請求不再提供服務(wù),直接返回錯誤(DEL請求和部分特殊請求除外)allkeys-lru:從所有key中使用LRU算法進(jìn)行淘汰volatile-lru:從設(shè)置了過期時間的key中使用LRU算法進(jìn)行淘汰allkeys-random:從所有key中隨機(jī)淘汰數(shù)據(jù)volatile-random:從設(shè)置了過期時間的key中隨機(jī)淘汰volatile-ttl:在設(shè)置了過期時間的key中,根據(jù)key的過期時間進(jìn)行淘汰,越早過期的越優(yōu)先被淘汰
當(dāng)使用 volatile-lru、 volatile-random、 volatile-ttl這三種策略時,如果沒有key可以被淘汰,則和 noeviction一樣返回錯誤
獲取當(dāng)前內(nèi)存淘汰策略:
127.0.0.1:6379> config get maxmemory-policy
通過配置文件設(shè)置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
通過命令修改淘汰策略:
127.0.0.1:6379> config set maxmemory-policy allkeys-lru
上面說到了Redis可使用最大內(nèi)存使用完了,是可以使用LRU算法進(jìn)行內(nèi)存淘汰的,那么什么是LRU算法呢?
LRU(Least Recently Used),即最近最少使用,是一種緩存置換算法。在使用內(nèi)存作為緩存的時候,緩存的大小一般是固定的。當(dāng)緩存被占滿,這個時候繼續(xù)往緩存里面添加數(shù)據(jù),就需要淘汰一部分老的數(shù)據(jù),釋放內(nèi)存空間用來存儲新的數(shù)據(jù)。這個時候就可以使用LRU算法了。其核心思想是:如果一個數(shù)據(jù)在最近一段時間沒有被用到,那么將來被使用到的可能性也很小,所以就可以被淘汰掉。
Redis使用的是近似LRU算法,它跟常規(guī)的LRU算法還不太一樣。近似LRU算法通過隨機(jī)采樣法淘汰數(shù)據(jù),每次隨機(jī)出5(默認(rèn))個key,從里面淘汰掉最近最少使用的key。
可以通過maxmemory-samples參數(shù)修改采樣數(shù)量:例:maxmemory-samples 10 maxmenory-samples配置的越大,淘汰的結(jié)果越接近于嚴(yán)格的LRU算法
Redis為了實現(xiàn)近似LRU算法,給每個key增加了一個額外增加了一個24bit的字段,用來存儲該key最后一次被訪問的時間。
一、phpStudy,是一個新手入門最常用的開發(fā)環(huán)境。
二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。
三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強(qiáng)大的建站集成軟件包;
四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。
五、寶塔面板,寶塔面板是一款服務(wù)器管理軟件,支持windows和linux系統(tǒng)。
六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務(wù)器PHP套件。
關(guān)于“php使用redis內(nèi)存不足如何解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“php使用redis內(nèi)存不足如何解決”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。