适合的maxTotal
1、业务希望Redis并发量
2、客户端执行命令时间
3、Redis资料:例如nodes(例如应用个数)*maxTotal是不能超过redis的最大连接数。(config get maxclients)
4、资源开销:例如虽然希望控制空闲连接,但是不希望因为连接池的频繁释放创建连接造成不必要开销。
优化IO的几种方法
1、命令本身优化:例如慢查询的keys、hgetall bigkey
2、减少网络通信次数
3、降低接入成本:例如客户端长连接/连接池、NIO等
四种批量优化的方法
1、串行mget
2、串行IO
3、并行IO
4、hash_tag
四种方案优缺点分析:
方案 | 优点 | 缺点 | 网络IO |
串行mget | 编程简单 少量keys满足需求 | 大量keys请求延迟严重 | O(keys) |
串行IO | 编程简单 少量节点满足需求 | 大量node延迟严重 | O(nodes) |
并行IO | 利用并行特性 延迟取决于最慢的节点 利用 | 编程复杂 超市定位问题难 | O(max_slow(node)) |
hash_tag | 性能最高 | 读写增加tag维护成本 tag分布易出现数据倾斜 | O(1) |