NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
这个答案可能会令很多人感到意外,`Redis`当中是存在“事务”的。这里我把`Redis`的事务带了引号,原因在后面分析。 `Redis`当中的单个命令都是原子操作,但是如果我们需要把多个命令组合操作又需要保证数据的一致性时,就可以考虑使用`Redis`提供的事务(或者使用前面介绍的`Lua`脚本)。 `Redis`当中,通过下面`4`个命令来实现事务: * `multi`:开启事务 * `exec`:执行事务 * `discard`:取消事务 * `watch`:监视 `Redis`的事务主要分为以下`3`步: 1. 执行命令`multi`开启一个事务。 2. 开启事务之后执行的命令都会被放入一个队列,如果成功之后会固定返回`QUEUED`。 3. 执行命令`exec`提交事务之后,`Redis`会依次执行队列里面的命令,并依次返回所有命令结果(如果想要放弃事务,可以执行`discard`命令)。 接下来让我们依次执行以下命令来体会一下`Redis`当中的事务: ~~~java multi //开启事务 set name lonely_wolf //设置 name,此时 Redis 会将命令放入队列 set age 18 //设值 age,此时 Redis 会将命令放入队列 get name //获取 name,此时 Redis 会将命令放入队列 exec //提交事务,此时会依次执行队列里的命令,并依次返回结果 ~~~ 执行完成之后得到如下效果: ![](https://img.kancloud.cn/74/6f/746f4a53dc24366b648b1a49f19b18bd_695x228.png)