@Controller
@RequestMapping("/myTest")
public class TestController {
@Autowired(required = false)
private TestService testService;
@Autowired
private RedisUtil redisUtil;
@RequestMapping("add")
public void add(HttpServletRequest request) throws Exception {
List<Course> cList = testService.queryByName("aaaaa");//查询
System.out.println(Thread.currentThread().getName()+"clist.size:"+cList.size());
if(cList.size() == 0){
if(redisUtil.setnx("name_"+"aaaaa", "aaaaa") == 1){//如果数据存在则返回0,不存在返回1
Course course = new Course();
course.setCname("aaaaa");
try{
testService.add1(course);//插入
}catch (Exception e) {
redisUtil.del("name_"+"aaaaa");//插入出异常则删除
throw e;
}
System.out.println(Thread.currentThread().getName()+"success");
redisUtil.expire("name_"+"aaaaa", 3);//设失效时间3秒
}else{
System.out.println(Thread.currentThread().getName()+"exists");
}
}else{
System.out.println(Thread.currentThread().getName()+"false");
}
}
}
RedisUtil 工具类可以网上搜
以下测试代码:
public class Test {
/**
* @param args
* @throws IOException
* @throws HttpException
*/
public static void main(String[] args) throws Exception {
for(int i=0;i<10;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
post();
}
}).start();
}
}
public static void post(){
HttpClient client = new HttpClient();
client.getParams().setContentCharset("UTF-8");
PostMethod method = new PostMethod("http://localhost:8080/practice/myTest/add.do?time="+new Date().getTime());
method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");
try {
client.executeMethod(method);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}