在这里对 jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比:
直接同步方式
最简单的调用方式。
![fe2093ded69aec9f0b3512c116322f77.png](https://i-blog.csdnimg.cn/blog_migrate/a58cbbd9646ec3eb0afe969211cf14d9.jpeg)
二、事务方式(Transactions)
redis 的事务很简单,他主要目的是保障,一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。调用jedis.watch(…)方法来监控key,如果调用后key值发生变化,则整个事务会执行失败。另外,事务中某个操作失败,并不会回滚其他操作。这一点需要注意。还有,可以使用discard()方法来取消事务。
![8d183e771615370724823334d71c50a7.png](https://i-blog.csdnimg.cn/blog_migrate/20948b41090a6095d32c2908cd9735cc.jpeg)
三、管道(Pipelining)异步方式
有时,我们需要采用异步方式,一次发送多个指令,不同步等待其返回结果。这样可以取得非常好的执行效率。这就是管道,调用方法如下:
![6b9704b827637d6d8a502bedd84c10e1.png](https://i-blog.csdnimg.cn/blog_migrate/f6bb2ca8491f3bb50058fd4217b18d53.jpeg)
四、分布式直连同步调用
![f19ada8f71f6c4a6de7894598381d135.png](https://i-blog.csdnimg.cn/blog_migrate/cdbc3e20c24a198f487912cfcafe454e.jpeg)
五、分布式直连异步调用
![a35f0875cfd4579df167ab882ad51188.png](https://i-blog.csdnimg.cn/blog_migrate/b74ccb68097a0759ccb7996f6e16b484.jpeg)
6、 分布式连接池同步调用
![728ae6c652893dc06a8697c71974c9ff.png](https://i-blog.csdnimg.cn/blog_migrate/af06feb409af15bd2510b4ff87ec6cb5.jpeg)
七、分布式连接池异步调用
![ede7a094ffb80f69ffed39da9181509c.png](https://i-blog.csdnimg.cn/blog_migrate/51bedce6c17c989fc0ca696fa980dd5d.jpeg)
八、注意
1、事务和管道都是异步模式。在事务和管道中不能同步查询结果。
2、分布式中,连接池的性能比直连的性能略好。
3、分布式调用中不支持事务。因为事务是在服务器端实现,而在分布式中,每批次的调用对象都可能访问不同的机器,所以,没法进行事务。
4、分布式中,连接池方式调用线程安全。