redis中的數(shù)據(jù)占用內(nèi)存大小分析
如今越來越來的系統(tǒng)中使用redis作為緩存系統(tǒng),但是隨著用戶量的增長,業(yè)務(wù)數(shù)據(jù)不斷增多,redis服務(wù)器的內(nèi)存空間有可能會到瓶頸了,及時觀察redis中的各種鍵內(nèi)存占用多少,會方便我們評估何時升級redis服務(wù)器規(guī)格,以及對于是否需要進(jìn)行程序優(yōu)化來設(shè)計合理的存儲結(jié)構(gòu)都會有很大幫助,下面給大家介紹兩款工具rdr和redis-rdb-tools,可以很好的滿足我們的需要

redis-server版本 3.2
rdr版本 0.0.1
redis-rdb-tools版本 0.1.15
rdr工具的使用
rdR(redis data reveal)是一個用于解析redis rdb備份文件的工具。基于golang實現(xiàn),可以實現(xiàn)根據(jù)rdb文件生成一份詳細(xì)的內(nèi)存占用數(shù)據(jù)報告,并且能在本地啟動一個server進(jìn)程,在網(wǎng)頁中呈現(xiàn)出美觀的數(shù)據(jù)報告
詳細(xì)使用參考官方倉庫:https://github.com/xueqiu/rdr
安裝
rdr提供了linux/OSX/Windows下的可執(zhí)行文件,直接點擊下載,我這里演示W(wǎng)indows下的使用方式

下載下來后存儲到d:/dev路徑下

使用方式
1.首先要去redis服務(wù)器端將rdb文件復(fù)制到本地,為了方便,我將rdb文件放到了rdr工具所在目錄

這里再說下redis rdb文件該怎么找到,通過查看redis服務(wù)器配置文件redis.conf,搜索dbfilename可以快速定位到該配置,按照路徑就可以找到redis rdb備份文件了

2.在rdr工具所在的路徑下打開命令行窗口,執(zhí)行指令

可以看到指令執(zhí)行成功后,在本地啟動了server,監(jiān)聽端口8080
3.打開瀏覽器,訪問http://localhost:8080/,能看到詳細(xì)的內(nèi)存占用數(shù)據(jù)報告,包括鍵數(shù)量、不同的數(shù)據(jù)類型、元素計數(shù)等

不過通過網(wǎng)頁版的數(shù)據(jù)報告中有個小問題,對于redis中的不同數(shù)據(jù)庫沒有明顯的區(qū)分展示~,混在一起,不是太清晰
redis-rdb-tools工具的使用
采用python實現(xiàn)的rdb文件解析工具,這個可以支持單個key的內(nèi)存占用情況查詢
詳細(xì)使用參考官方倉庫:https://github.com/sripathikrishnan/redis-rdb-tools/
安裝
1.安裝python環(huán)境,我這里安裝了python2.7.15

2.通過pip安裝redis-rdb-tools
我這里python-lzf庫沒有安裝成功,不過不影響實際使用,這個庫是為了加速rdb文件解析速度~
使用方式
3.安裝完成后就可以在命令行中使用了,輸入指令生成內(nèi)存報告文件
等待一段時間,命令阻塞執(zhí)行完成后,就會在-f參數(shù)指定的路徑下生成對應(yīng)的文件
用excel打開生成的csv文件,可以看到詳細(xì)的統(tǒng)計結(jié)果,包含了所有數(shù)據(jù)庫下所有key的內(nèi)存占用情況~

redis-rdb-tools中還帶了一個很有用的命令,能幫助我們直接查詢單個key的內(nèi)存占用情況,命令格式如下
執(zhí)行測試下效果,可以看到命令執(zhí)行完成后,直接回顯出指定key對應(yīng)的內(nèi)存占用情況了

注意該操作在生產(chǎn)環(huán)境下慎用,視key大小情況再行決定是否執(zhí)行,有可能會阻塞執(zhí)行很長時間才能計算出結(jié)果~