返回顶部

收藏

redis使用jedis在客户端做事务调用

更多

redis的事务很简单,他主要目的是保障,一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。

看下面例子:

@Test
public void test2Trans() {
    Jedis jedis = new Jedis("localhost");
    long start = System.currentTimeMillis();
    Transaction tx = jedis.multi();
    for (int i = 0; i < 100000; i++) {
        tx.set("t" + i, "t" + i);
    }
    List<Object> results = tx.exec();
    long end = System.currentTimeMillis();
    System.out.println("Transaction SET: " + ((end - start)/1000.0) + " seconds");
    jedis.disconnect();
}

我们调用jedis.watch(…)方法来监控key,如果调用后key值发生变化,则整个事务会执行失败。另外,事务中某个操作失败,并不会回滚其他操作。这一点需要注意。还有,我们可以使用discard()方法来取消事务。

但是要注意:

  1. 分布式调用中不支持事务。
  2. 因为事务是在服务器端实现,而在分布式中,每批次的调用对象都可能访问不同的机器,所以,没法进行事务

标签:redis,jedis,事务

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. mckee 发表 2015-06-25 17:56:57 Redis事务操作
  2. 博主 发表 2018-03-15 13:44:04 Jedis常见异常汇总
  3. 博主 发表 2018-03-17 04:59:18 JedisPool资源池优化
  4. daoluan 发表 2014-06-28 13:10:57 深入剖析 redis 事务机制
  5. 博主 发表 2015-01-16 00:00:00 Redis的事务
  6. 捣乱 发表 2014-06-28 13:10:57 深入剖析 redis 事务机制
  7. 梁喜健 发表 2013-05-30 03:32:55 Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
  8. lezhizhe_net 发表 2016-02-29 09:45:30 Redis事务介绍
  9. lezhizhe_net 发表 2016-02-29 09:45:00 Redis事务介绍
  10. 博主 发表 2015-06-06 11:56:17 Spring+Jedis+Redis自定义模板实现缓存Object对象
  11. WeYo 发表 2015-06-02 16:00:00 Jedis & Benchmark
  12. lezhizhe_net 发表 2016-02-29 09:45:30 Redis事务介绍

发表评论