Redis占用記憶體大小

2022-06-29 12:33:12 字數 1347 閱讀 3004

redis占用記憶體大小

我們知道redis是基於記憶體的key-value資料庫,因為系統的記憶體大小有限,所以我們在使用redis的時候可以配置redis能使用的最大的記憶體大小。

1、通過配置檔案配置

通過在redis安裝目錄下面的redis.conf配置檔案中新增以下配置設定記憶體大小。

//設定redis最大占用記憶體大小為100m

maxmemory 100mb

redis的配置檔案不一定使用的是安裝目錄下面的redis.conf檔案,啟動redis服務的時候是可以傳乙個引數指定redis的配置檔案的。

2、通過命令修改

redis支援執行時通過命令動態修改記憶體大小。

//設定redis最大占用記憶體大小為100m

127.0.0.1:6379> config set maxmemory 100mb

//獲取設定的redis能使用的最大記憶體大小

127.0.0.1:6379> config get maxmemory

如果不設定最大記憶體大小或者設定最大記憶體大小為0,在64位作業系統下不限制記憶體大小,在32位作業系統下最多使用3gb記憶體

redis的記憶體淘汰

既然可以設定redis最大占用記憶體大小,那麼配置的記憶體就有用完的時候。那在記憶體用完的時候,還繼續往redis裡面新增資料不就沒記憶體可用了嗎?

實際上redis定義了幾種策略用來處理這種情況:

noeviction(預設策略):對於寫請求不再提供服務,直接返回錯誤(del請求和部分特殊請求除外)。

allkeys-lru:從所有key中使用lru演算法進行淘汰。

volatile-lru:從設定了過期時間的key中使用lru演算法進行淘汰。

allkeys-random:從所有key中隨機淘汰資料。

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

lru演算法

**: 

類的占用記憶體大小

1.類的大小為類的非靜態成員資料的型別大小之和,也 就是說靜態成員資料不作考慮。2.普通成員函式與sizeof無關。3.靜態成員並不屬於某個物件,sizeof取的是物件大小。4.虛函式由於要維護在虛函式表,所以要佔據乙個指標大小,也就是4位元組。5.空類的sizeof為1。因為乙個空類也要例項化,所...

c 類占用記憶體大小計算

c 類所佔記憶體大小計算 說明 筆者的作業系統是32位的。class a sizeof a sizeof a 1 明明是空類,為什麼編譯器說它是1呢?空類同樣可以例項化,每個例項在記憶體中都有乙個獨一無二的位址,為了達到這個目的,編譯器往往會給乙個空類隱含的加乙個位元組,這樣空類在例項化後在記憶體得...

位元組,字元及占用記憶體大小情況

一 位元組 的定義 位元組 byte 是一種計量單位,表示資料量多少,它是計算機資訊技術用於計量儲存容量的一種計量單位。二 字元 的定義 字元是指計算機中使用的文字和符號,比如1 2 3 a b c 等等。三 位元組 與 字元 它們完全不是乙個位面的概念,所以兩者之間沒有 區別 這個說法。不同編碼裡...