事务
Redis 事务可以一次执行多个命令,有两个特性:
隔离性:事务的所有命令都会序列化、按顺序的执行,事务执行完后才会执行其他客服端的命令。
原子性: 事务中的命令要么全部被执行,要么全部不执行。
使用你事务时会遇到两个错误:
入队时出错,一般时因为语法错误引起的,加入事务队列就会报错,遇到这类错误,一般会放弃事务
EXEC调用后出错,列如对一个 值为 a1 的 key 执行 incr,这类错误,即使某个命令产生了错误,其他命令依旧会继续执行执行,不会回滚
Reids 中的 WATCH命令
使用 WATCH 命令可以监控键,如果被监控的键,再 EXEC 之前被修改,那么事务会放弃执行(注意:事务中的命令在 exec命令后才开始执行)
EXEC 执行以后,无论事务是否执行成功,都会放弃对所有键的监控。
使用Java操控Redis事务命令
// 开启事务
Transaction transaction = jedis.multi();
// 提交事务
transaction.exec();
// 放弃事务
transaction.discard();
// 监控键
jedis.watch("balance", "debt");
// 放弃所有被监控的键
jedis.unwatch();
完整代码示例:
package com.project.test;<