redis事务可以一次执行多个命令(按顺序的串行话执行,执行中不会被其他命令插入,不许加塞)
简介
redis事务可以一次执行多个命令(允许在一次单独的步骤中执行一组命令),并且带有一下两个重要保证
批量操作在发送EXEC命令前被放入队列缓存。
收到exec命令后industry事务执行,事务中任意命令实行失败,其余的命令依然执行
在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中
1.Redis会将一个事务中的所有命令序列化,然后按序执行
2.执行不会被其他命令插入,不许出现加塞行为
常用命令
discard :取消事务,放弃执行事务块内的所有命令
exec: 执行所有事务块内的命令
mulit:标记一个事务的开始
unwatch:取消watch命令对于所有key的监视
watch : 监视一个或者多个key,如果在事务执行之前这个或者这些个key被其他命令所改动,那么事务将被打断
一个事务从开始到执行会经历一下三个阶段:
开始事务
命令入队
执行事务
示例:
A向B转账50元
应用场景
一组命令必须同时都执行,或者都不执行,我们要保证一组命令在执行过程中不被其他命令插入。
案例:
秒杀:
商品秒杀 14:00 秒杀100部手机
key:存入100手机 编号:list
秒杀流程:
如果一个用户只能抢一个手机
如果抢成功:用户名 ,存入抢成功的手机编号,存入新的集合list
在初始化商品库中移除抢到的手机编号