小編給大家分享一下如何查看redis Key資源占用情況,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)專業(yè)做網(wǎng)站、成都網(wǎng)站設(shè)計,集網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文推廣等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
Redis 在日常的開發(fā)中,會積累大量的 Key,占用不少內(nèi)存空間。有時候,我們想知道當前 Redis 里面有多少個 Key,是哪個 Key 占用了最大的內(nèi)存。
但是,我們知道,由于 Redis 是單線程數(shù)據(jù)庫,所以在線上環(huán)境是絕對禁止使用keys *這種命令的,因為它會花費很長時間掃描所有的 Key,在這個過程中,Redis 會卡死,無法處理其他的讀寫操作。
那么,我們應(yīng)該怎么知道當前有多少個 Key 呢?有同學說可以使用scan命令。但這個命令一方面是需要寫程序來迭代,另一方面是它給出的結(jié)果可能是不準確的。
也有同學會說,可以使用info keyspace命令,運行效果如下圖所示:
確實可以看到有多少個 Key。不過另一個問題是,怎么知道哪個 Key 占用的內(nèi)存空間最大?
還有時候,Redis 里面可能有幾萬十幾萬個 Key,里面有些 Key 是可以刪掉的。但是由于我們不能使用keys命令查看當前有哪些 Key,所以不知道這些可以刪掉的 Key 竟然還在。
實際上,這些問題,我們使用一個叫做RDR[1]的工具,都可以解決。在 RDR 的 Github 上,可以找到對應(yīng)系統(tǒng)的可執(zhí)行文件。我們以 Linux 版本為例來進行說明。Linux 版本的可執(zhí)行文件地址為:https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-linux,下載以后,賦予可執(zhí)行權(quán)限:
cd ~ wget https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-linux chmod +x rdr-linux
接下來,我們需要找到dump.rdb文件。
Redis 默認開啟了RDB方式的持久化儲存。滿足一定條件時,Redis 會把內(nèi)存中的數(shù)據(jù)存放到硬盤中,防止由于突然斷電導致數(shù)據(jù)丟失。默認情況下,RDB 文件在/var/lib/redis/dump.rdb,這個文件只有 root 用戶可以讀取。
如果你現(xiàn)在不是 root 用戶,那么你可以把它復制出來,修改成當前用戶,我的 Linux 系統(tǒng)當前用戶名叫做 kingname,所在的用戶組也叫 kingname,所以可以執(zhí)行如下 shell 命令:
cd ~ sudo cp /var/lib/redis/dump.rdb ./ sudo chown kingname:kinganme dump.rdb
修改了用戶以后,現(xiàn)在我們讓 RDR 來讀取這個RDB 文件:
./rdr-linux show -p 8766 dump.rdb
運行效果如下圖所示:
現(xiàn)在,打開瀏覽器,打開http://IP:8766,就可以看到當前 Redis 的各個 Key 的統(tǒng)計信息:
看完了這篇文章,相信你對“如何查看Redis Key資源占用情況”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!