import java.util.List; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; public class TestRedisTransaction { private static JedisConnectionFactory getJedisConnectionFactory() { JedisConnectionFactory jcf = new JedisConnectionFactory(); jcf.setHostName("127.0.0.1"); jcf.setPort(6379); jcf.setPassword("123"); jcf.afterPropertiesSet(); return jcf; } private static RedisConnection getRedisConnection() { return getJedisConnectionFactory().getConnection(); } public static void main(String[] args) { RedisConnection rc = getRedisConnection(); //MULTI 标记一个事务块的开始。 //事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。 rc.multi(); rc.incr("user_id".getBytes()); rc.echo("hello".getBytes()); rc.incr("user_id".getBytes()); rc.ping(); //EXEC 执行所有事务块内的命令。 List<Object> comm = rc.exec(); for (Object obj : comm) { if (obj instanceof byte[]) { System.out.println(new String((byte[])obj)); continue; } System.out.println(obj); } rc.multi(); rc.ping(); rc.echo("hehe".getBytes()); //DISCARD 取消事务,放弃执行事务块内的所有命令。 rc.discard(); //WATCH 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 rc.watch("salary".getBytes()); //UNWATCH 取消 WATCH 命令对所有 key 的监视。 rc.unwatch(); } }