c语言sscanf函数的用法是什么
289
2022-09-17
Rdeis的学习-事务
Redis-事务详解
ACID特性以及其解释
原子性:同时执行4个操作,一个修改a的值,一个修改b的值,一个修改c的值,一个修改d的值。修改a,c,d的值都成功了,但是修改b的值的时候出错了,那么这4个操作都不会执行,同时会被回滚回来。 一致性:a有500块钱,b有500块钱,现在a转给b200块钱需要两个动作,一个是从自己的账号上扣200,另一个是在b的账号上增两百。不能a扣了200而b没有增200或者不能a的200没扣而b的200却增了,这样会导致总额从原来的1000变为800或者1200,这就是不具备一致性。而只有当一开始一共是1000,操作完之后总和还是1000时才具有一致性。 隔离性:有一个苹果,我吃了一口放在了桌子上然后出去了,回来发现苹果被吃了两口,说明我走的这一段时间有其他人也来吃了一口。现在,我又吃了一口放在桌子上喊了一句:这个苹果已经被隔离了大家都不能动了!然后又出去了。期间我弟过来看到了这个苹果准备吃一口,但准备吃的时候发现这个苹果已经被我隔离了,只有等我解除隔离才能吃到,所以只能在哪等我回来,等我回来之后,我又啃了两口后已经吃腻了,于是喊了一句:解除隔离!于是在旁边的弟弟便可以得到这个已经被解除隔离的苹果,继续吃了起来!这个就是隔离性。(好SB的栗子) 持久性:就是当事务成功提交后将操作的数据保存到数据库中,这么理解就行了,没那么重要。
Redis中的事务
Redis中的事务(transaction)是一组命令的集合。包括MULTI, EXEC, DISCARD ,WATCH ,UNWATCH.当然,这些指令的作用就是实现一个类似于关系型数据库的事务。 重点介绍WATCH WATCH命令可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务(注意是事务)就不会执行,监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,EXEC命令执行完之后被监控的键会自动被UNWATCH)。
Redis中的错误
两种错误:入队错误和执行错误。
Redis不支持回滚
因为执行错误发生时,事务中后面的命令依然执行。 简单来说就是:执行时发生错误其实都是我们程序员的代码编程出现了BUG,跟他们Redis没有半毛钱关系,只要语法对了那么就不会出现异常。同时没有rollback也使得redis更加优秀。那么出现执行错误怎么办呢?捕获异常处理呗。
如何保证Redis具有ACID特性
Redis的事务原生具有一致性,需要我们通过程序保证原子性,通过WATCH指令保证隔离性,通过设置持久话机制为AOF机制appendfsync = always 保证持久性。所以,Redis最终可以做到ACID!
参考
Redis-事务详解
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~