论坛首页 编程语言技术论坛

学习 Redis Transaction(事务)

浏览 2922 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2017-05-09   最后修改:2017-05-09

学习 Redis Transaction(事务)

 

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();
		
		

	}

}

 

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics