分布式事务使用说明

RedisTransactional注解说明

RedisTransactional使用悲观锁实现,此注解只能实用在方法上,在方法执行前会被上锁,执行完成会解锁。

示例:

    @RedisTransactional
    public String add(){
       Integer value  = cache.get(key);
       value++;
       cache.put(key,value);

       return "ok";
    }

参数说明

参数名 说明 必须
lockName 锁名字,如果不填则使包名加方法名作为锁名
lockTimeout 锁的超时时间,单位为秒 ,默认为30s
acquireTimeout 获取锁的最长等待时间,单位为秒,如果不填,则一直会等待

使用详解

1、如果多个方法对同一个分布式对像可能有并发事务操作时,则应该使用同一个锁名:

    @RedisTransactional(lockName = "test_lock" )
    public String add(){
       Integer value  = cache.get(key);
       value++;
       cache.put(key,value);

       return "ok";
    }

    @RedisTransactional(lockName = "test_lock" )
    public String cut(){
        Integer value  = cache.get(key);
        value--;
        cache.put(key,value);
        return "ok";
    }

2.如果只有一个方法操作了分布式对象,则可以使用默认的锁名:

    @RedisTransactional 
    public String add(){
       Integer value  = cache.get(key);
       value++;
       cache.put(key,value);

       return "ok";
    }

3、 一个带有所有参数的示例:

    @RedisTransactional(lockName = "test_lock",acquireTimeout=10,lockTimeout = 10)
    public String add(){
       Integer value  = cache.get(key);
       value++;
       cache.put(key,value);

       return "ok";
    }

results matching ""

    No results matching ""