1.摘要在上一篇文章中,我们详细介绍了对于低阶流量的系统,我们可以防止接口被重复提交!随着业务的快速增长,每秒的订单请求数可能会从几十个上升到几百个甚至上千个。面对这样一个订单流量越来越高的场景,此时数据库的访问压力会急剧上升。上面的方案完全依赖数据库来解决,难度会特别大!对于这样的场景,我们可以选择引入缓存中间件来解决。可选组件包括redis、memcache等,接下来我们将通过介绍redis缓存数据库服务器来为大家介绍具体的解决方案!2.程序实践先来看一张图,它是本程序的核心流程图。实现逻辑如下:1、当用户进入订单提交界面时,调用后端获取请求的唯一ID,同时后端将请求的唯一ID存储在redis中并返回发送给前端,前端将唯一ID值嵌入到页面中2.当用户点击提交按钮时,后端检查请求的唯一ID是否存在。如果不存在,则显示错误信息;如果存在,则继续后续检查过程。限时锁定,若锁定成功,则继续后续流程;如果加锁失败,说明服务正在处理中,请不要重复提交4.最后一步,如果加锁成功,需要手动释放锁,避免再次请求时,提示同样的信息;同时,如果任务执行成功,需要清除该请求在redis中的唯一ID。5、至于数据库是否需要加唯一字段索引,理论上是不需要加的。如果加上的话,引入缓存服务更稳妥,防止重复提交的大致思路如上,实践代码如下!2.1.引入redis组件小编的工程基于SpringBoot版本搭建,添加相关redis依赖环境如下:
