Redis事务深入解析和使用 (3)

以下是事务在 Java 中的使用,代码如下:

import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; public class TransactionExample { public static void main(String[] args) { // 创建 Redis 连接 Jedis jedis = new Jedis("xxx.xxx.xxx.xxx", 6379); // 设置 Redis 密码 jedis.auth("xxx"); // 设置键值 jedis.set("k", "v"); // 开启监视 watch jedis.watch("k"); // 开始事务 Transaction tx = jedis.multi(); // 命令入列 tx.set("k", "v2"); // 执行事务 tx.exec(); System.out.println(jedis.get("k")); jedis.close(); } } 6.小结

事务为多个命令提供一次性按顺序执行的机制,与 Redis 事务相关的命令有以下五个:

multi:开启事务

exec:执行事务

discard:丢弃事务

watch:为事务提供乐观锁实现

unwatch:取消监控(取消事务中的乐观锁)

正常情况下 Redis 事务分为三个阶段:开启事务、命令入列、执行事务。Redis 事务并不支持运行时错误的事务回滚,但在某些入列错误,如 set key 或者是 watch 监控项被修改时,提供整个事务回滚的功能。

7.思考题

Redis 事务中如何解决并发修改的问题?Redis 支持事务回滚吗?使用 Redis 事务时会出现哪三种错误?这三种错误对事务有何影响?只有高手才能答对的问题,你能答上来几个?

8.参考&鸣谢

https://redis.io/topics/transactions

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzyfg.html