java高并发insert重复数据_详解java解决分布式环境中高并发环境下数据插入重复问题...

java 解决分布式环境中 高并发环境下数据插入重复问题

前言

原因:服务器同时接受到的重复请求

现象:数据重复插入 / 修改操作

解决方案 : 分布式锁

对请求报文生成 摘要信息 + redis 实现分布式锁

工具类

分布式锁的应用

package com.nursling.web.filter.context;

import com.nursling.nosql.redis.RedisUtil;

import com.nursling.sign.SignType;

import com.nursling.sign.SignUtil;

import redis.clients.jedis.Jedis;

import javax.servlet.ServletRequest;

import javax.servlet.http.HttpServletRequest;

import java.util.HashMap;

import java.util.Map;

/**

* 并发拦截

* 高并发下 过滤掉 相同请求的工具

* @author 杨.

*

*/

public class ContextLJ {

private static final Integer JD = 0;

/**

* 上锁 使用redis 为分布式项目 加锁

* @param sign

* @param tiD

* @return

* @throws Exception

*/

public static boolean lock(String sign, String tiD) {

synchronized (JD) { // 加锁

Jedis jedis = RedisUtil.getJedis();

String uTid = jedis.get(sign);

if (uTid == null) {

jedis.set(sign, tiD);

jedis.expire(sign, 36)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值