1.redis事务
redis的基本事务:basic transaction
“
redis的基本事务需要用到multi命令和exec命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。
和关系型数据库那种可以在执行的过程中进行回滚的事务不同,在redis里面,被multi命令和exec命令包围的所有命令会一个接一个执行,
直到所有命令都执行完毕为止。当一个事务执行完毕之后,redis才会处理其他客户端的命令。
”
要在redis里面执行事务,我们首先需要执行multi命令,然后输入那些我们想要在事务里面执行的命令,最后再执行exec命令。当redis从一个客户端那里接收到multi命令时,redis会将这个客户端之后发送的所有命令都放到 一个队列里面,直到这个客户端发送了exec命令为止,然后redis就会在不被打断的情况下,一个接一个地执行存储在队列里面的命令。
1.1 命令格式及用法
命令格式:
multi
...
...
exec
MULTI 命令用于开启一个事务,它总是返回 OK 。
MULTI 执行之后, 客户端可以继续向服务器发送任意多条命令, 这些命令不会立即被执行, 而是被放到一个队列中, 当 EXEC 命令被调用时, 所有队列中的命令才会被执行。另一方面, 通过调用 DISCARD , 客户端可以清空事务队列, 并放弃执行事务。
1.2 案例
设置俩个账户:fAmount 、tAmount。让fAmount减少20的同时让tAmount增加20,要保证这俩个动作是原子性操作。
set fAmount 100
set tAmount 100
multi
decrby fAmount 20
incrby tAmount 20
exec
redis事务来保证一组命令的原子性操作