分布式事务使用说明
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";
    }