十二,Redis批处理优化

69 阅读1分钟

一,Pipline

1.1 为什么要优化批处理

单个命令的执行流程:

image

N条命令依次执行流程:

image

N条命令批量执行:

image

1.2 Pipeline介绍

image


image

Pipeline的多个命令之间不具备原子性

二,集群下的批处理

如MSET或者Pipeline这样的批处理需要在一次请求中携带多条命令,而此时如果Redis是一个集群,那批处理命令的多个key必须落在同一个插槽中,否则就会执行失败。

解决办法:

image

hash_tag就是key的有效部分,例如:name那么tag就是根据name计算,{a}name那么就是根据a来计算

这个就叫hash_tag

我们StringRedisTemplate.opsForValue().multiSet(map)底层会采用第三种,并行slot方式实现的,类似的,获取也可以multiGet