1. 程式人生 > >Java實現redis事務

Java實現redis事務

1.  正常執行的事務

    @Test
    public void test() {
        Jedis jedis = new Jedis("localhost");
        Transaction transaction = jedis.multi();
        transaction.lpush("key", "11");
        transaction.lpush("key", "22");  
        transaction.lpush("key", "33");
        List<Object> list = transaction.exec();
    }
上述事務正常執行,執行完後,再執行
System.out.println(jedis.lrange("key",0,10));
會將上述事務中插入redis中的資料全部打印出來


2. 執行事務的過程中丟擲異常

    @Test
    public void test() {
        Jedis jedis = new Jedis("localhost");
        try {
            Transaction transaction = jedis.multi();
            transaction.lpush("key", "11");
            transaction.lpush("key", "22");
            int a = 6 / 0;
            transaction.lpush("key", "33");
            List<Object> list = transaction.exec();
        } catch (Exception e) {

        }
    }
上述程式碼執行事務的過程中會丟擲異常,導致事務失敗,所以全部無效,再執行
System.out.println(jedis.lrange("key",0,10));
打印出的結果為空

結論: 事務要麼全部執行成功,要麼全部不執行