Redis 业务
概述
Redis 支撑分布式环境下的业务操作,其业务能够一次履行多个指令,业务中的一切指令都会序列化地次序履行。业务在履行过程中不会被其他客户端发送来的指令恳求打断,服务器在履行完业务中的一切指令之后,才会持续处理其他客户端的其他指令。Redis 的业务操作分为敞开业务、指令入行列、履行业务三个阶段
Redis 的业务履行流程如下:
- 敞开业务:客户端履行 Multi 指令敞开业务
- 提交恳求:客户端提交指令到业务
- 使命入行列:Redis 将客户端的恳求放入业务行列中等候履行
- 反应入队状况:服务器回来 QUEUD,表示指令已被放入业务行列
- 履行指令:客户端经过 Exec 履行业务
- 业务履行过错:在 Redis 业务中假如某条指令履行过错,则其他指令会持续履行,不会回滚,能够经过 Watch 监控业务履行的状况并处理指令履行过错的异常情况
- 反应履行成果:服务器向客户端回来业务履行的成果
Redis 业务相关指令有:
- Multi:符号一个业务块的开端
- Exec:履行一切业务块内的指令
- Discard:撤销业务,抛弃履行业务块内的一切指令
- Watch:监督一个(或多个)Key,假如在业务履行之前这个(或这些)Key 被其他指令改动,那么业务将被打断
- Unwatch:撤销 Watch 指令对一切 Key 的监督
代码完成
public void transactionSet(Map<String, Object> commandList) {
// 1:敞开业务权限
redisTemplate.setEnableTransactionSupport(true);
try {
// 2:敞开业务
redisTemplate.multi():
// 3:履行业务指令
for (Map.Entry<String, Object> entry : commandList.entrySet()) {
String mapkey = entry.getKey();
Object mapValue = entry.getValue();
redisTemplate.opsForValue().set(mapKey, mapValue);
}
// 4:履行成功,提交业务
redisTemplate.exec();
} catch (Exception e) {
// 5:履行失利,回滚业务
redisTemplate.discard();
}
}