拋磚系列之redis監控命令( 三 )


如果你正在開發一個跨機房同步的redis同步工具 , 當你的從節點未按預期收到指令時,就可以使用這一命令做一些調試和診斷,為了方便理解,我放一張老東家自研的redis跨機房同步工具流程圖 。

拋磚系列之redis監控命令

文章插圖
Performing an LRU simulation【模擬LRU訪問】 redis 通常用作具有 LRU 逐出功能的緩存,鍵的數量和內存大?。ㄍü齧axmemory指定)將決定緩存的命中率 , 借助工具可以模擬命中率最終得到正確的maxmemory參數 。
該工具使用80/20法則來執行 GET 、SET操作 ,意味著 20% 的key將在 80% 的次數內被請求,這符合一般緩存場景中的請求分布 。
我們假設給redis分配的內存為10兆,內存驅逐策略為allkeys-lru , 預期有100萬個key,期望命中率是90%,測試一下看是否符合預期:
# 設置最大內存10兆config set maxmemory 10MB#lru-testredis-cli --lru-test 1000000119250 Gets/sec | Hits: 43654 (36.61%) | Misses: 75596 (63.39%)125250 Gets/sec | Hits: 46002 (36.73%) | Misses: 79248 (63.27%)127500 Gets/sec | Hits: 46860 (36.75%) | Misses: 80640 (63.25%)122500 Gets/sec | Hits: 45228 (36.92%) | Misses: 77272 (63.08%)126750 Gets/sec | Hits: 46623 (36.78%) | Misses: 80127 (63.22%)125250 Gets/sec | Hits: 46150 (36.85%) | Misses: 79100 (63.15%)120000 Gets/sec | Hits: 43962 (36.63%) | Misses: 76038 (63.37%)121000 Gets/sec | Hits: 44630 (36.88%) | Misses: 76370 (63.12%)123250 Gets/sec | Hits: 45616 (37.01%) | Misses: 77634 (62.99%)命中率明顯不符合預期,36%離90%相差甚遠 , 我們將maxmemory擴大一倍接著測試
# 設置最大內存20兆config set maxmemory 20MB#lru-testredis-cli --lru-test 1000000134500 Gets/sec | Hits: 65181 (48.46%) | Misses: 69319 (51.54%)133500 Gets/sec | Hits: 86515 (64.81%) | Misses: 46985 (35.19%)133000 Gets/sec | Hits: 98930 (74.38%) | Misses: 34070 (25.62%)123500 Gets/sec | Hits: 95223 (77.10%) | Misses: 28277 (22.90%)122000 Gets/sec | Hits: 94237 (77.24%) | Misses: 27763 (22.76%)122250 Gets/sec | Hits: 94430 (77.24%) | Misses: 27820 (22.76%)122500 Gets/sec | Hits: 94564 (77.20%) | Misses: 27936 (22.80%)124000 Gets/sec | Hits: 95517 (77.03%) | Misses: 28483 (22.97%)125000 Gets/sec | Hits: 96723 (77.38%) | Misses: 28277 (22.62%)129000 Gets/sec | Hits: 99839 (77.39%) | Misses: 29161 (22.61%)內存增加一倍以后命中率達到了77%左右 , 繼續調整maxmemory直到符合預期 。
redis-cli --lru-test切記不要在生產環境使用,會給服務器帶來較大壓力;
推薦閱讀https://redis.io/docs/manual/cli/
拋磚系列之redis監控命令(一)
拋磚系列之redis監控命令

文章插圖
【拋磚系列之redis監控命令】

推薦閱讀