2023年7月17日发(作者:)
数据库新增幂等操作_幂等性-菜鸟辗迟-博客园经过:今天去⾯试了,⾯试官问我库存做扣减的时候,如何确保幂等性,说实话当时我有点⼤脑空⽩,虽然以前也看过幂等性相关的知识,但是不知怎的,竟然词穷了。废话说完了,开始正题。什么是幂等性百度了⼀下,幂等性是⽤户对同⼀个操作执⾏⼀次和执⾏多次的结果是⼀样的;对于数据库的幂等性来说,查询和删除操作是幂等的,也就是说,同⼀个查询操作,不管查询多少次,结果都是⼀样的;对于删除来说,不管删除多少次,最终结果都是把⼀条数据给删除了,所以幂等性也可以说是针对结果的,也就是多次相同操作,造成的结果⼀样,那就是幂等的;对于新增和修改则就不是幂等的,所以关于幂等操作,数据库的操作主要是新增和修改;怎么实现幂等性我当时在回去的路上就百度了⼀下幂等性,然后⼜和朋友聊了⼀下,然后我想到的如下,可能会有理解不到位的地⽅,欢迎⼤家多多指正,共同学习,共同进步:⾸先要确定是哪种模式下的(单机直接操作数据库、分布式调⽤库存系统),以下都以减少库存为例:在单机直接操作数据库修改的情况下,如果只是单机调⽤⼀个⽅法减少库存,那么对应的数据库操作就是对库存表的对应的库存数量扣减;那么会有如下操作:⾸先查询该种产品是否扣减成功,如果已经扣减成功,则不做操作,如果没有扣减成功,那么则执⾏扣减操作;所以操作的时候要增加⼀个是否扣减成功的标志,就⽐如如下Sql:update tbl_stock set num = (原有数量-要扣减的数量), 扣减标识=‘成功’ where id = '' and 扣减标识 <> '成功'正常情况下,直接通过主键id去修改数量就可以了,现在再增加 扣减标识 的判断就可以做到幂等,当然'成功'也可以换成是订单ID或线程ID,能确定是同⼀个操作的值即可;在单机直接操作数据库新增的情况下,⽐如每次扣减库存是增加⼀条扣减记录,那么同⼀个操作,添加两条扣减记录就是不幂等的;怎么确保不管操作多少次,同⼀个操作的结果都是⼀样的;添加唯⼀列,也就是,添加的记录⾥有⼀列是唯⼀的,那么同⼀个操作,多次执⾏,只有⼀次会成功,其它的都⽆法添加第⼆条;在分布式系统的操作中,在⽹上看了⽹友说的使⽤redis和tocken什么的,还是不太明⽩,欢迎各位⼤佬留⾔。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689597961a269344.html
评论列表(0条)