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)