pipline
- 未使用pipline
性能测试代码
pipeline 实现 mdel
redis提供了mset、mget方法 但没有提供mdel方法 可以借助pipeline实现
原生批命令(mset, mget)与Pipeline对比
- 原生批命令是原子性,pipeline是非原子性
(原子性概念:一个事务是一个不可分割的最小工作单位,要么都成功要么都失败。原子操作是指你的一个业务逻辑必须是不可拆分的. 处理一件事情要么都成功,要么都失败,原子不可拆分)
- 原生批命令一命令多个key, 但pipeline支持多命令(存在事务),非原子性
- 原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成
使用pipeline组装的命令个数不能太多,不然数据量过大,增加客户端的等待时间,还可能造成网络阻塞,可以将大量命令的拆分多个小的pipeline命令完成
事务
- redsi事务
使用watch后, multi失效,事务失效 WATCH的机制是: 在事务EXEC命令执行时,Redis会检查被WATCH的key, 只有被WATCH的key从WATCH起始时至今没有发生过变更,EXEC才会被执行。 如果WATCH的key在WATCH命令到EXEC命令之间发生过变化,则EXEC命令会返回失败。
源码地址
https://gitee.com/pingfanrenbiji/springboot-jedisCluster/blob/master/demo/src/main/java/com/example/pipline/PipelineTest.java
参考文档
https://www.jianshu.com/p/8849c0b5753d http://www.gxlcms.com/redis-377198.html https://blog.csdn.net/huangbaokang/article/details/88028814 https://blog.csdn.net/w1lgy/article/details/84455579 官方文档 : http://redisdoc.com/topic/cluster-tutorial.html?highlight=slot