redis应用基于状态控制的批量任务执行

Posted if年少有为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis应用基于状态控制的批量任务执行相关的知识,希望对你有一定的参考价值。

1. 事务的基本操作

  • 开启事务
multi
  • 作用

    设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中

  • 执行事务

exec
  • 作用

    设定事务的结束位置,同时执行事务。与multi成对出现,成对使用


注意:加入事务的命令暂时进入到任务队列中,并没有立即执行,只有执行exec命令才开始执行


  • 取消事务
discard
  • 作用

    终止当前事务的定义,发生在multi之后,exec之前


2. 事务的工作流程

基于特定条件的事务执行---锁

业务场景

天猫双11热卖过程中,对已经售罄的货物追加补货,4个业务员都有权限进行补货。补货的操作可能是一系列的操作,牵扯到多个连续操作,如何保障不会重复操作?

业务分析
  • 多个客户端有可能同时操作一组数据,并且该数据一旦被操作修改后,将不适用于继续操作
  • 在操作之前锁定要操作的数据,一旦发生变化,终止当前操作
解决方案
  • 对key添加监视锁,在执行exec前如果key发生了变化,终止事务执行
watch key1 [key2...]
  • 取消对所有key的监视
unwatch

Trips 18:

  • redis应用基于状态控制的批量任务执行

以上是关于redis应用基于状态控制的批量任务执行的主要内容,如果未能解决你的问题,请参考以下文章

基于ETCD实现分布式锁&实战:控制多个应用仅一台执行任务

基于ETCD实现分布式锁&实战:控制多个应用仅一台执行任务

基于ETCD实现分布式锁&实战:控制多个应用仅一台执行任务

我应该在 Fragment 中的啥生命周期状态下执行异步任务?

基于Spring Boot+Security+Redis权限管理系统,权限控制采用RBAC

Sleep() 方法后的代码片段没有被执行