Redis中統(tǒng)計(jì)各種數(shù)據(jù)大小的方法
如果 MySQL 數(shù)據(jù)庫(kù)比較大的話,我們很容易就能查出是哪些表占用的空間;不過(guò)如果 Redis 內(nèi)存比較大的話,我們就不太容易查出是哪些(種)鍵占用的空間了。
有一些工具能夠提供必要的幫助,比如 redis-rdb-tools 可以直接分析 RDB 文件來(lái)生成報(bào)告,可惜它不能百分百實(shí)現(xiàn)我的需求,而我也不想在它的基礎(chǔ)上二次開(kāi)發(fā)。實(shí)際上開(kāi)發(fā)一個(gè)專用工具非常簡(jiǎn)單,利用 SCAN 和 DEBUG 等命令,沒(méi)多少行代碼就能實(shí)現(xiàn):
<?php
$patterns = array(
'foo:.+',
'bar:.+',
'.+',
);
$redis = new Redis();
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$result = array_fill_keys($patterns, 0);
while ($keys = $redis->scan($it, $match = '*', $count = 1000)) {
foreach ($keys as $key) {
foreach ($patterns as $pattern) {
if (preg_match("/^{$pattern}$/", $key)) {
if ($v = $redis->debug($key)) {
$result[$pattern] += $v['serializedlength'];
}
break;
}
}
}
}
var_dump($result);
?>
當(dāng)然,前提是你需要提前總結(jié)出可能的鍵模式,簡(jiǎn)單但不嚴(yán)謹(jǐn)?shù)姆椒ㄊ?MONITOR:
shell> /path/to/redis-cli monitor |
awk -F '"' '$2 ~ "ADD|SET|STORE|PUSH" {print $4}'
此外,需要注意的是:因?yàn)?DEBUG 返回的 serializedlength 是序列化后的長(zhǎng)度,所以最終計(jì)算的值小于實(shí)際內(nèi)存占用,但考慮到相對(duì)大小依然是有參考意義的。
相關(guān)文章
利用Redis實(shí)現(xiàn)SQL伸縮的方法簡(jiǎn)介
這篇文章主要介紹了利用Redis實(shí)現(xiàn)SQL伸縮的方法,包括講到了鎖和時(shí)間序列等方面來(lái)提升傳統(tǒng)數(shù)據(jù)庫(kù)的性能,需要的朋友可以參考下2015-06-06
redis主從復(fù)制的原理及實(shí)現(xiàn)
Redis主從復(fù)制是一種數(shù)據(jù)同步機(jī)制,它通過(guò)將一個(gè)Redis實(shí)例的數(shù)據(jù)復(fù)制到其他Redis,本文主要介紹了redis主從復(fù)制的原理及實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
詳解redis在微服務(wù)領(lǐng)域的貢獻(xiàn)
本文以dubbo為例看下redis是如何利用自身特性來(lái)完成注冊(cè)中心的功能,對(duì)redis微服務(wù)相關(guān)知識(shí)感興趣的朋友一起看看吧2021-10-10
Redis migrate數(shù)據(jù)遷移工具的使用教程
這篇文章主要給大家介紹了關(guān)于Redis migrate數(shù)據(jù)遷移工具的使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Linux中設(shè)置Redis開(kāi)機(jī)啟動(dòng)的方法
這篇文章主要給大家介紹了關(guān)于Linux中設(shè)置Redis開(kāi)機(jī)啟動(dòng)的方法,主要包括在CentOS7.0系統(tǒng)和Debian 8.0系統(tǒng)下實(shí)現(xiàn)方法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-04-04
Ubuntu22.04 LTS 上安裝Redis的過(guò)程
Redis是一種開(kāi)源的內(nèi)存數(shù)據(jù)存儲(chǔ),可以用作數(shù)據(jù)庫(kù)、緩存和消息代理等,本文將會(huì)介紹兩種不同的安裝方式,包括從源代碼編譯安裝以及通過(guò)apt包管理器安裝,需要的朋友參考下吧2023-11-11
詳解如何發(fā)現(xiàn)并解決Redis熱點(diǎn)Key問(wèn)題
Redis 熱點(diǎn) Key 是指在某一時(shí)間段內(nèi),被大量的讀寫(xiě)操作命中的 Key,這種情況可能會(huì)導(dǎo)致性能瓶頸,數(shù)據(jù)一致性問(wèn)題,緩存擊穿等問(wèn)題,所以本文給大家介紹了如何發(fā)現(xiàn)并解決Redis熱點(diǎn)Key問(wèn)題,需要的朋友可以參考下2024-05-05

