网易首页 > 网易号 > 正文 申请入驻

程序员:这个WebApi接口很奇葩,删除的数据几秒内还可以查出来!

0
分享至

程序员小伙伴诧异得跟我说:“哥,我数据都删了,结果还是能查到,但是再查就没有了,这是咋回事?”,问题是这样的,我们公司有个程序员小伙伴在调一个WebApi的删除接口后,立马又调用了这个WebApi的数据获取接口,结果发现,删除的数据还是会通过数据获取接口返回过来,但是只要等那么几秒再获取数据,就不会有,这是咋回事呢?

我看了下同事的代码,发现写的好像没有问题。然后我就下了几个断点去监视代码执行过程,最终确认了我的同事代码写得就是没有问题!

简单说下我同事代码的调用流程吧,首先有个数据查询按钮,根据条件访问WebApi把数据查出来以后,每条数据有一条ID,选中对应数据后,调用删除WebApi接口,传参数据ID,等待接口返回删除成功的消息,在收到删除成功的消息以后,再次调用查询按钮的逻辑根据原有条件再查询一遍,目的是为了刷新界面数据。

这么干应该没有多大问题吧?

但是,当再次调用查询按钮查出来的数据里面仍然有之前删除的数据,你们说奇怪不奇怪?

在确定我同事的代码没有问题以后,我大胆猜测,这个WebApi的删除接口肯定写得有问题!因为我们是调用的第三方接口,看不到源码,所以只能猜它为什么会这样。

聪明的小伙伴们,你们觉得是什么原因导致出现了这样的问题呢?

我猜这个第三方接口的数据查询接口,查询的实际上是缓存。而在每次增删改查以后,接口会更新缓存。

这个操作本来是没有问题的,但是,写删除接口的人可能犯了一个比较严重的错误。

我猜,过程是这样的,在接口收到数据ID以后,直接操作数据库执行语句,将数据库数据删除了,而不是先删除缓存。

这样做其实是没有问题的,因为可能存在一种情况,那就是如果先删除缓存的话,数据库数据删除失败了,那么缓存就恢复不了了。所以,先删数据库,再删除缓存一点毛病也没有。

但是,当数据库数据删除完成以后,需要更新缓存,此时,可能会存在两种操作,第一种就是直接从缓存里把数据删除,第二种就是把数据重新查一遍,再更新缓存。

我猜这个WebApi接口的提供者选择的是第二种方法!

但是,第二种方法有个缺点,那就是当数据量较大的话,重新查询数据可能会导致这个删除接口的等待时间过长。

于是,写这个接口的大聪明就直接选择了异步查询,并且不等待查询结果出来,就把接口结果抛出去了。

最终导致的结果就像我同事遇到的那样,当我的同事调用删除接口以后,接口先删除了数据库数据,然后异步且不等待执行了缓存更新逻辑,但是,可能数据库数据量较大,在缓存还没更新的情况下,我同事又再次调用了一下查询接口,而这个接口的数据因为是从未更新的缓存里面取的,所以,仍然可以查到已经删除的数据!

当有了这个猜想以后,我就开始找茬了,发现这个第三方平台提供的很多接口都是这个逻辑,不光是删除接口有问题,只要和增删改有关的接口几乎都会有问题。

比如说,增加完数据以后立马调用查询接口,发现刚刚增加的数据查不到,或者刚刚更新的数据再次查询发现根本没改,以及删除后还能查到的问题。

而只要过那么几秒再去查或者多查几次,这些问题就不会出现了!

最后,我联系了这个第三方平台接口的提供者,并且反馈了我们发现的问题,相信不久之后就会有结果!



如果您理解不了的话,可以看我写的Demo!

结语

其实,我猜写这个接口的程序员可能会认为反正数据库数据已经删了,缓存异步更新好像也不影响。但是,从用户层面来讲,如果用户一直不刷新数据,那么可能一直操作的就是删除以后的数据,对于用户来说是很不友好的!

那么,您认为如何避免这种问题呢?这个问题留给大家了!

声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
重大失误!日本大型银行误判欧美降息时机 遭受史上罕见损失

重大失误!日本大型银行误判欧美降息时机 遭受史上罕见损失

财联社
2024-06-19 21:51:10
“我仅有这一辆车,你拿去我骑什么”,天在哭泣

“我仅有这一辆车,你拿去我骑什么”,天在哭泣

陶舜财经
2024-06-19 12:43:57
岛内风向变了,连胜文返台后发出大胆言论,赖清德罕见对大陆喊话

岛内风向变了,连胜文返台后发出大胆言论,赖清德罕见对大陆喊话

好笑娱乐君每一天
2024-06-20 01:12:13
妻子2次和光棍偷情,2017年光棍嫌她有丈夫,觉得被玩弄了杀死她

妻子2次和光棍偷情,2017年光棍嫌她有丈夫,觉得被玩弄了杀死她

汉史趣闻
2024-06-19 11:12:42
“拜登身体机能衰退”?美官方回应

“拜登身体机能衰退”?美官方回应

新京报
2024-06-19 08:40:36
消息称华为与腾讯接近达成协议,鸿蒙应用商店将免除对微信的抽成

消息称华为与腾讯接近达成协议,鸿蒙应用商店将免除对微信的抽成

IT之家
2024-06-19 14:42:41
2012年三对高校教师夫妻玩“换妻”游戏,内容不堪入目,结局如何

2012年三对高校教师夫妻玩“换妻”游戏,内容不堪入目,结局如何

阿胡
2024-06-19 14:36:12
欧洲杯又乱了:4分未出线,0分却还活着!世界第16晋级,第10垫底

欧洲杯又乱了:4分未出线,0分却还活着!世界第16晋级,第10垫底

侃球熊弟
2024-06-20 04:54:02
照片曝光!菲海军特战队员被“兔子”海警断掉手指,已被菲官方授勋

照片曝光!菲海军特战队员被“兔子”海警断掉手指,已被菲官方授勋

不掉线电波
2024-06-18 23:00:53
网友笑翻了!上汽把欧盟加征38.1%关税字样做进了周边产品

网友笑翻了!上汽把欧盟加征38.1%关税字样做进了周边产品

热点科技
2024-06-19 18:42:43
医学奇迹!姆巴佩已恢复训练,大概率出战荷兰,将佩戴特制面具!

医学奇迹!姆巴佩已恢复训练,大概率出战荷兰,将佩戴特制面具!

风过乡
2024-06-20 07:04:27
菲律宾军方承认:武器被中国缴获!受伤水兵的手指,换来一项嘉奖

菲律宾军方承认:武器被中国缴获!受伤水兵的手指,换来一项嘉奖

影孖看世界
2024-06-20 00:25:03
高盛:中国正在考虑进行全面的消费税改革

高盛:中国正在考虑进行全面的消费税改革

风向观察
2024-06-19 19:07:10
深度 | 欧盟挥舞关税大棒,德经济部长将访华,能否找到“友好”解决方案?

深度 | 欧盟挥舞关税大棒,德经济部长将访华,能否找到“友好”解决方案?

上观新闻
2024-06-19 20:45:10
原来是惯犯?网曝“外交豁免权”女子,边开车边用手机录像,并骂其他司机有毛病

原来是惯犯?网曝“外交豁免权”女子,边开车边用手机录像,并骂其他司机有毛病

可达鸭面面观
2024-06-19 15:59:06
各地“罚没收入”正数排行榜,本质上是“营商环境”倒数排行榜

各地“罚没收入”正数排行榜,本质上是“营商环境”倒数排行榜

芯怡飞
2024-06-19 10:24:09
金正恩接机普京,细节满满,两人的修养藏不住

金正恩接机普京,细节满满,两人的修养藏不住

天择杂谈
2024-06-20 00:10:06
余琦三个问题很严重,警方已经调查,老公身份曝光,结局大快人心

余琦三个问题很严重,警方已经调查,老公身份曝光,结局大快人心

兰子记
2024-06-19 18:42:11
95分钟绝平!欧洲杯神剧本:世界第66救赎,死亡之组出线乱了

95分钟绝平!欧洲杯神剧本:世界第66救赎,死亡之组出线乱了

叶青足球世界
2024-06-19 22:59:57
普京:俄朝其中一方遭他国侵略时,另一方需提供援助!美国:担心俄朝关系不断深化

普京:俄朝其中一方遭他国侵略时,另一方需提供援助!美国:担心俄朝关系不断深化

每日经济新闻
2024-06-19 19:12:10
2024-06-20 09:16:49
程序员古耕
程序员古耕
程序员、网文作家、自媒体人
394文章数 291关注度
往期回顾 全部

科技要闻

美国AI圈震动! “OpenAI宫斗”核心人物苏茨克维官宣创业

头条要闻

德对华最强硬部长将访华 专家:或向中方传递三层意思

头条要闻

德对华最强硬部长将访华 专家:或向中方传递三层意思

体育要闻

欧洲杯最大的混子,非他莫属

娱乐要闻

黄一鸣“杀疯了” 直播间卖大葱养孩子

财经要闻

茅台大跌,谁的锅?

汽车要闻

双肾格栅变化大/内饰焕新 新一代宝马X3官图发布

态度原创

教育
游戏
亲子
旅游
公开课

教育要闻

微澜月报|2024.5月

《龙腾世纪影障守护者》等级上限50级 技能树分三种

亲子要闻

女儿自信给包上密码锁,下一秒被爸爸轻松“解码”

旅游要闻

遭遇极端高温天气导致希腊多名游客死亡

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版