redis key占用記憶體量分析

2021-09-07 04:11:01 字數 1649 閱讀 4414

redis

的指令看不出哪一型別的

key,占用了多少記憶體,不好分析

redis

記憶體開銷大的情況下,各應用程式使用快取的佔比。借助第

3方工具進行分析 1

、採用2

個工具結合

redis-rdb-tools+sqlite 2

、sqlite

linux

伺服器都會自帶,安裝

redis

-rdb

-tools 使用

pip安裝

pip install

redis

-rdb

-tools

原始碼安裝

如果不成功安裝

yum install python-

setuptools 3

、獲取對應

redis

的rdb

檔案,使用

redis

-rdb

-tools

生成記憶體快照

rdb-c memory

dump.rdb

> memory.csv

注意:記憶體使用量是理論上的近似值,在一般情況下,略低於實際值

4、把資料匯入

sqlite

(mysql資料庫實際上都能匯入)

,sqlite

語法和mysql

基本一致

splite3

test.db

sqlite

> create table memory(database

int,type

varchar

(128),key

varchar

(128),

size_in_bytes

int,encoding

varchar

(128),

num_elements

int,len_largest_element

varchar

(128),time

varchar

(128

));

sqlite

>.mode

csvmemory

sqlite

>.import memory.csv

memory

5、查詢

查詢key個數

sqlite

>select count(*) from memory;

查詢總的記憶體占用

sqlite

> select

sum(

size_in_bytes

) from memory;

查詢記憶體占用最高的10個

key

sqlite

>select * from memory order by

size_in_bytes

desc

limit 10;

程式占用記憶體分析

堆與棧有什麼區別?一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由o...

C C 程式占用記憶體分析

首先感謝下原作者,寫的真的非常明白,非常詳細 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os ...

C C 程式占用記憶體分析

首先感謝下原作者,寫的真的非常明白,可能這是我看過的最詳細的堆和棧記憶體分析了 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設...