幂等性的实现

幂等性

1. 生成key的方式

记得保证redis生成的key和删除的key是成功的(看返回值)

1)允许表单跳转

这种情况比较容易,比如在列表中添加一条记录,可以在列表页面生成一个key,放到redis中,同时在添加页面时带着这个key。等到提交时,把key也提交,后台根据key与redis中进行比较,有的话保存,保存成功就删除这个key。而没有时就直接放弃保存(重复提交)

2)不允许表单跳转

可以将提交的表单进行hash运算,生成一个key,设置一个有效时间,用来规定该时间段内提交的都是重复提交。如果在规定时间内再次提交相同的表单数据,那么hash值也是相同的,这样可以给前台提示是否要重复提交(可能用户就想重复提交,得给他这个机会)。hash值的相同来判断他是否为重复提交

2. sql索引

有些数据有业务上的唯一性,可以采用这种方法。
比如,一个活动只允许用户注册一次,注册的方式是使用手机号的方式。那么可以通过活动ID+手机号的方式创建唯一索引。插入数据时通过mysql的唯一索引的唯一性来保证数据不会重复提交
联合唯一索引创建示例

3.不知道有没有类似语句或触发器之类的
通过类似sql语句,有数据啥也不干,没有数据才进行插入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值