一、簡介:
和大多NoSQL數據庫一樣,Redis同樣遵循了Key/Value數據存儲模型。在有些情況下,Redis會將Keys/Values保存在內存中以提高數據查詢和數據修改的效率,然而這樣的做法并非總是很好的選擇。鑒于此,我們可以將之進一步優化,即盡量在內存中只保留Keys的數據,這樣可以保證數據檢索的效率,而Values數據在很少使用的時候則可以被換出到磁盤。
在實際的應用中,大約只有10%的Keys屬于相對比較常用的鍵,這樣Redis就可以通過虛存將其余不常用的Keys和Values換出到磁盤上,而一旦這些被換出的Keys或Values需要被讀取時,Redis則將其再次讀回到主內存中。
二、應用場景:
對于大多數數據庫而言,最為理想的運行方式就是將所有的數據都加載到內存中,而之后的查詢操作則可以完全基于內存數據完成。然而在現實中這樣的場景卻并不普遍,更多的情況則是只有部分數據可以被加載到內存中。
在Redis中,有一個非常重要的概念,即keys一般不會被交換,所以如果你的數據庫中有大量的keys,其中每個key僅僅關聯很小的value,那么這種場景就不是非常適合使用虛擬內存。如果恰恰相反,數據庫中只是包含少量的keys,而每一個key所關聯的value卻非常大,那么這種場景對于使用虛存就再合適不過了。
在實際的應用中,為了能讓虛存更為充分的發揮作用以幫助我們提高系統的運行效率,我們可以將帶有很多較小值的Keys合并為帶有少量較大值的Keys。其中最主要的方法就是將原有的Key/Value模式改為基于Hash的模式,這樣可以讓很多原來的Keys成為Hash中的屬性。
三、配置:
1). 在配置文件中添加以下配置項,以使當前Redis服務器在啟動時打開虛存功能。
vm-enabled yes
2). 在配置文件中設定Redis最大可用的虛存字節數。如果內存中的數據大于該值,則有部分對象被換出到磁盤中,其中被換出對象所占用內存將被釋放,直到已用內存小于該值時才停止換出。
新聞熱點
疑難解答