您的位置:首页 > 数据库 > Redis

Redis的事务处理

2017-01-23 11:15 363 查看

Redis的事务操作

multi 开启事务

exec 提交事务

discard取消事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set djk fdjs
QUEUED
127.0.0.1:6379> set djklg djgl
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> exec
(error) ERR EXEC without MULTI


4 watch监听key值

watch: 在事务开启之前监听一个或多个keys值,如果在事务执行时,客户端进行修改该值,那么事务都不执行。

127.0.0.1:6379> watch hello
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set hello ffff
QUEUED
127.0.0.1:6379> set name zll
QUEUED
127.0.0.1:6379> exec
(nil)


Jedis实例

public class JedisTransaction {
private Jedis jedis;
@Before
public void beforeJedis(){
jedis = JedisConnection.jedisConnection();
}
@Test
public void testTransaction(){
//事务一旦执行,客户端发来的请求都不能打断。
//开启一个事务
Transaction transaction = jedis.multi();
transaction.set("hello", "world!");
transaction.mset("hashset_keys","nnnn");
transaction.lpush("list_key","hhhh");
transaction.lpush("list_key","xxx");
transaction.exec();
System.out.println("=="+jedis.keys("*"));
}
@Test
public void testWatch(){
jedis.watch("name");
Transaction transaction = jedis.multi();
transaction.set("hello", "world!");
//此时用客户端,对name进行修改操作。
transaction.mset("name","tttt");
transaction.lpush("age","444");
System.out.println(transaction.exec());
}
@Test
public void testDiscard(){
Transaction transaction = jedis.multi();
transaction.set("hello", "world!");
//取消事务
System.out.println(transaction.discard());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 事务