原生 JedisCluster 对批量操作的限制
-
mget
mset
必须在一个槽;
四种批量优化的方法
串行 mget
- 在 for 循环中执行一条条的
get
; - 需要 n 次网络时间;
串行 IO
- 在客户端对所有 key 做
CRC16(key) % 16384
计算出 key 所属的 slot,在把所有的 key 根据 node 分组,对每个分组执行一个pipeline
操作;
并行 IO
- 就是对串行 IO 的分组,用多线程
pipeline
;
hash_tag
- 所有的键值用一个 tag 包装,一次性发往一个节点,批量取的时候从一个节点一次性取出来;