javaWeb中如何防止两个人同时操作同一条记录(限制单人操作),使用redis的解决方式

最近在做demo的时候,碰到这么一个问题:当页面上同一角色有两个人登录的时候,他们同时操作统一条记录; 简言之就是,同一记录同一时刻多人操作。这种情况在我的业务中回导致数据的冗余,干扰正常的程序运行。

当时想到的解决办是锁表或者使用缓存(当然其他的方式可以在下方留言探讨~),锁表没有尝试过所以自然就想到了缓存。
实现思路是,当页面端用户选中记录并且进行操作的时候,在服务端先不进行业务处理,而是先使用缓存,判断缓存中是否存在该业务单的操作信息,若果有则直接返回页面端,提示用户当前记录正在办理;如果没有则新增存入该条业务的操作信息,(操作信息的格式自定,注意唯一性),然后进行业务逻辑处理,处理完成(包含异常)之后进行缓存中操作信息的删除,到这里就大公告成。
(如果是集群分布式,注意缓存的共享~~)
初步尝试,欢迎各位的指正!
如下是一部分代码的内容:
 

public boolean doRedisLock(List<String> idList,String LockFlag,String cacheName){
        boolean islockSuccess = true;
        //防止多人人重复操作
        Map cache = CacheManager.getCache(cacheName);

        List<String> tempLockIdsList = new ArrayList<>();
        for (String idTemp :
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值