Redis高階特性 虛擬記憶體的使用技巧

2021-08-26 12:10:42 字數 1125 閱讀 5859

**:

【it168 專稿】首先說明下redis的虛擬記憶體與作業系統的虛擬記憶體不是一碼事,但是思路和目的都是相同的。就是暫時把不經常訪問的資料從記憶體交換到磁碟中,從而騰出寶貴的記憶體空間用於其他需要訪問的資料。尤其是對於redis這樣的記憶體資料庫,記憶體總是不夠用的。

除了可以將資料分割到多個redis server外。另外的能夠提高資料庫容量的辦法就是使用虛擬記憶體把那些不經常訪問的資料交換的磁碟上。如果我們的儲存的資料總是有少部分資料被經常訪問,大部分資料很少被訪問,對於**來說確實總是只有少量使用者經常活躍。當少量資料被經常訪問時,使用虛擬記憶體不但能提高單台redis server資料庫的容量,而且也不會對效能造成太多影響。

redis沒有使用作業系統提供的虛擬記憶體機制而是自己在實現了自己的虛擬記憶體機制,主要的理由有兩點:

1、作業系統的虛擬記憶體是已4k頁面為最小單位進行交換的。而redis的大多數物件都遠小於4k,所以乙個作業系統頁面上可能有多個redis物件。另外redis的集合物件型別如list,set可能存在與多個作業系統頁面上。最終可能造成只有10%key被經常訪問,但是所有作業系統頁面都會被作業系統認為是活躍的,這樣只有記憶體真正耗盡時作業系統才會交換頁面。

2、相比於作業系統的交換方式,redis可以將被交換到磁碟的物件進行壓縮,儲存到磁碟的物件可以去除指標和物件元資料資訊,一般壓縮後的物件會比記憶體中的物件小10倍,這樣redis的虛擬記憶體會比作業系統虛擬記憶體能少做很多io操作。

vm-enabled yes                       #開啟vm功能

vm-swap-file /tmp/redis.swap            #交換出來的value儲存的檔案路徑

vm-max-memory 1000000              #redis使用的最大記憶體上限

vm-page-size 32                      #每個頁面的大小32個位元組

vm-pages 134217728                  #最多使用多少頁面

vm-max-threads 4                    #用於執行value物件換入換出的工作執行緒數量

redis虛擬記憶體的使用

redis的虛擬記憶體與作業系統的虛擬記憶體不是一回事,但是思路和目的都是相同的。就是暫時把不經常訪問的資料從記憶體交換到磁碟中,從而騰出寶貴的記憶體空間用於其他需要訪問的資料。尤其是對於redis這樣的記憶體資料庫,記憶體總是不夠用的。除了可以將資料分割王到多個redis server外。另外能夠...

Redis學習手冊 虛擬記憶體

一 簡介 和大多nosql資料庫一樣,redis同樣遵循了key value資料儲存模型。在有些情況下,redis會將keys values儲存在記憶體中以提高資料查詢和資料修改的效率,然而這樣的做法並非總是很好的選擇。鑑於此,我們可以將之進一步優化,即盡量在記憶體中只保留keys的資料,這樣可以保...

Redis學習手冊 虛擬記憶體

posted on 2012 04 04 06 34 stephen liu 閱讀 1 編輯收藏 一 簡介 和大多nosql資料庫一樣,redis同樣遵循了key value資料儲存模型。在有些情況下,redis會將keys values儲存在記憶體中以提高資料查詢和資料修改的效率,然而這樣的做法並...