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 一般由程式設計師分配釋放,若程式設...