redis事务

什么是事务?
很多件事情按顺序一起执行,都成功了,就算完成了事务,否则就恢复如初,像没有执行过一样。

SET A 1000
SET B 2000
DECRBY A 100 (step 1)
INCRBY B 100 (step 2)

如果step1政策执行,step2发生异常那么
A 结果为 900
B 结果为 1000

自认为正确的解决方式

MULTI 
DECRBY A 100
INCRBY B 100
EXEC

然而实际上

MUlTI
SET a 100
INCRY b 1.22 (此行会报错)
SET a 200
EXEC

SET a 200 依然会被执行

MULTI 开始一个事务,将事务加入执行队列
EXEC 执行事务

Redis的事务并不是原子的,它并不支持回滚
使用DISCARD可以取消事务

MULTI
SET a 100
DISCARD

watch指令:

命令用于监视一个(或多个) key ,
如果在事务执行之前这个(或这些) key 被其他命令所改动,
那么事务将被打断
SET a 1
WATCH a 
SET a 2
MULTI
SET a 3
EXEC
GET a

结果 : a = 2
因为之前执行了watch在后面的事务中,a的值将保持2,
使用UNWATCH可取消监控
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 6,493评论 0 11
  • redis 是一个高性能的key-value 数据库。作为no sql 数据库redis 与传统关系型数据库相比有...
    点融黑帮阅读 7,936评论 1 15
  • Redis的事务是基于单线程的两阶段不完全事务(主要是不支持原子性),它仅仅是保证事务里的操作会被连续独占的执行。...
    zhanglbjames阅读 5,717评论 0 3
  • 1. 概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI...
    六月星空2011阅读 2,761评论 0 0
  • 1. 概述 事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制。 当遇到exec指令时,会执行事务...
    jqdywolf阅读 2,828评论 0 0

友情链接更多精彩内容