抛砖系列之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监控命令】

推荐阅读