使用Redis解决重复提交问题(redis避免重复提交)
使用Redis解决重复提交问题
在使用网页时,多次重复提交表单是一个常见的问题,特别是通过点击提交按钮发起请求后,如果用户未做出任何操作,数据就会重复提交。这种问题可能会给使用者,服务器及开发者带来巨大麻烦,特别是带来重复数据问题,因此需要有针对性的解决方案,如利用Redis来处理。
使用Redis非常有效的处理重复提交的问题,一般称之为“重复检测”,也即在处理重复提交的过程中增加一次检测,并记录已经提交的记录,如果在相应的重复提交周期内检测到已经提交的记录,就不会提交重复数据,或者在处理重复提交的过程中做定制处理,以此达到增加数据去重的目的。
Redis可以说是最常用的数据库,因为它具有很强的性能,而且易于实现更为复杂的操作。因此,使用Redis处理重复提交的问题是一个很好的选择。考虑到不同的程序语言的差异,实现的脚本也不尽相同,下面将以使用JavaScript脚本实现重复提交数据去重为例:
1、先利用Redis,实例化一个Client对象,来操作Redis数据库;
//实例化Client对象
const redisClient = require(‘redis’).createClient(6379,’127.0.0.1′)
2、在Redis中设置变量,如果已存在,则表明重复提交,返回重复提交信息,如果不存在,则设置变量,以便识别是否重复提交;
//检测是否已经提交,若没有提交,则设置变量,以便识别是否重复提交
if(!redis.exists(‘submitted‘)){
redis.set(‘submitted‘, true)
} else {
let errMsg = “重复提交数据”
return errMsg
}
3、利用定期的任务,清理已生效的变量,恢复原来状态:
//利用定时任务,清理已生效的变量,恢复原来状态
setInterval(()=>{
redis.del(‘submitted‘)
}, 60000)//1000为1秒,60000为1分钟
通过使用Redis,可以很好的解决重复提交问题,并可以定制处理,去重问题,对于编程语言也不存在任何差异,使得脚本实现方便简单,提高性能,可用性及稳定性。
相关文章