redis事务(Transactions)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis事务(Transactions)相关的知识,希望对你有一定的参考价值。

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()方法来取消事务。

以上是关于redis事务(Transactions)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 嵌套事务 transactions

redis事物

2016022612 - redis事务命令集合

Redis 管道事务Lua 脚本对比

FragmentManager 已经在执行事务。提交后何时初始化寻呼机是安全的?

Redis的Java客户端Jedis的八种调用方式(事务管道分布式…)介绍(转)