如果是分布式项目就用redis创建一个分布式锁(不是分布式就用jdk自带的锁):
pubic Object query(QueryParam params){
Object result = null;
String lockKey = "lock:" + JSON.toJSONString(params);
result = redis.get(JSON.toJSONString(params));
if(result == null){
redis.lock(lockKey)
try{
result = redis.get(JSON.toJSONString(params));
if(result == null){
result = dao.query(params);
}
}finally {
redis.unLock(lockKey);
}
}
return result;
}
目的是在同一时刻只让一个用户去查数据库,其他人等待.