Redis事务

Redis事务
Redis事务可以一次执行多个命令,并且带有以下两个重要保证:
  • 批量操作在发送EXEC命令前被放入队列缓存
  • 收到EXEC命令后进入事务执行,事务中任何命令执行失败,其余命令依然被执行
  • 在事务执行过程中,其他客户端提交的命令请求不会插入到实物执行命令序中。

一个事务从开始到执行会经历三个阶段

  • 开始事务
  • 命令入队s
  • 执行事务

实例

描述:它先以MULTI开始一个事务,然后将多个命令入队到事务中,最后由EXEC命令触发事务,一并执行事务中所有命令

127.0.0.1:6379> set book-name "mastering C++ in 21 days"
QUEUED
127.0.0.1:6379> get book-name
QUEUED
127.0.0.1:6379> sadd tag "C++" "Programming" "Mastering Series"
QUEUED
127.0.0.1:6379> smembers tag
QUEUED
127.0.0.1:6379> exec
1) OK
2) "mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
   2) "C++"
   3) "Programming"
127.0.0.1:6379> smembers tag
1) "Mastering Series"
2) "C++"
3) "Programming"

discard

描述:取消事务,放弃执行事务块内的所有命令。

返回值:总是返回OK

127.0.0.1:6379> multi
OK
127.0.0.1:6379> ping
QUEUED
127.0.0.1:6379> set greeting "hello"
QUEUED
127.0.0.1:6379> discard
OK

exec

描述:用于执行所有事务块内的命令

返回值:按命令执行的先后顺序排列,当操作被打断时,返回控制nil

127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr user_id
QUEUED
127.0.0.1:6379> incr user_id
QUEUED
127.0.0.1:6379> incr user_id
QUEUED
127.0.0.1:6379> ping
QUEUED
127.0.0.1:6379> exec
1) (integer) 1
2) (integer) 2
3) (integer) 3
4) PONG
127.0.0.1:6379> get user_id
"3"

你可能感兴趣的:(redis,redis)