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