一,Pipline
1.1 为什么要优化批处理
单个命令的执行流程:
N条命令依次执行流程:
N条命令批量执行:
1.2 Pipeline介绍
Pipeline的多个命令之间不具备原子性
二,集群下的批处理
如MSET或者Pipeline这样的批处理需要在一次请求中携带多条命令,而此时如果Redis是一个集群,那批处理命令的多个key必须落在同一个插槽中,否则就会执行失败。
解决办法:
hash_tag就是key的有效部分,例如:name那么tag就是根据name计算,{a}name那么就是根据a来计算
这个就叫hash_tag
我们StringRedisTemplate.opsForValue().multiSet(map)底层会采用第三种,并行slot方式实现的,类似的,获取也可以multiGet。