2019独角兽企业重金招聘Python工程师标准>>>

@Controller
@RequestMapping("/myTest")
public class TestController {@Autowired(required = false)private TestService testService;@Autowiredprivate 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,不存在返回1Course 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 blocke.printStackTrace();}new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubpost();}}).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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

转载于:https://my.oschina.net/u/1582930/blog/405948

并发下,使用redis防止数据重复插入(数据库未对表字段设置唯一情况下)相关推荐

  1. 解决数据重复插入问题(sql与锁方法)

    解决数据重复插入(sql与锁方法) 一.问题 在实际应用中,用户可能会有连点操作,当连点操作的时间间隔非常短时,系统很容易造成重复数据的插入,如图所示: 可以看到有2条数据被重复插入了(encryte ...

  2. 大量数据批量插入数据库

    大量数据批量插入数据库 前言 工作时遇到了大量数据需要插入到数据库的情况,一条条的插入速度慢效率低下,不能满足需求,为了解决此问题采用了sql中使用foreach,并在service中设置批量来进行批 ...

  3. 01219 oracle,ORA-01219: 数据库或可插入数据库未打开: 仅允许在固定表或视图中查询 oracle...

    一周没用过oracle,打开数据库的时候报错: 执行请求的操作时遇到错误: ORA-01219: 数据库或可插入数据库未打开: 仅允许在固定表或视图中查询 01219. 00000 - "d ...

  4. 灵活运用分布式锁解决数据重复插入问题

    作者:快应用服务器研发团队-Lin Yupan 一.业务背景 许多面向用户的互联网业务都会在系统后端维护一份用户数据,快应用中心业务也同样做了这件事.快应用中心允许用户对快应用进行收藏,并在服务端记录 ...

  5. 数据重复插入问题及解决方案

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/25 1.问题背景 某天客户反馈说,有一条一模一样的数据 ...

  6. sql 数据表归档_如何在考虑规模的情况下归档SQL Server数据

    sql 数据表归档 We manage data in a growing environment where our clients query some of our data, and on o ...

  7. cassss服务未启动_Mysql无法启动情况下,如何恢复数据呢?

    本文适用于,mysql无法启动,但数据文件未丢失的情况. Mysql因意外情况,导致无法启动,数据库未做备份的情况下,如何将数据迁移至其他数据库中. 原数据库地址:192.168.1.100(以下简称 ...

  8. MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接

    MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...

  9. Python读取excel文件数据并插入数据库

    例子: 将excel文件StudentInfo.xls的学生信息插入到student表中 注: 使用的版本:Python3.7,MySQL5.5 一.连接mysql数据库 安装第三方库pymysql: ...

最新文章

  1. 正则表达式限制输入整数或小数
  2. Codeforces Round #253 (Div. 1) A. Borya and Hanabi 暴力
  3. Xamarin Essentials教程设备信息DeviceInfo
  4. 浏览器事件循环与node事件循环
  5. python request-python-request-各方法使用及格式
  6. volley框架下发送和读取cookie
  7. 瑞幸:不会死,也没有稳
  8. 第三轮316工程知识竞赛简讯_【资讯】第五届日本文化知识竞赛决赛
  9. arp协议的主要功能是_程序员需要掌握的一些网络协议汇总
  10. (38)FPGA面试技能提升篇(C/C++、questasim仿真工具)
  11. 搜狐创始人张朝阳操起“老本行”:居然开物理课了
  12. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序搜索
  13. 软件开发项目过程管理文档
  14. 软件测试简历项目经验该怎么写?【两年经验】
  15. ssm整合的简单案例(附源码)
  16. java读取文件之BufferedReader
  17. MySQL数据库被删除如何恢复
  18. 配置使用consol口和网线登录交换机
  19. mysql数据库约束详解_深入理解mysql数据库的约束
  20. 解决MacBookPro git push提示You hasn‘t joined this enterprise

热门文章

  1. php的Snoopy类
  2. golang dlv 远程调试
  3. 详解 Qt 串口通信程序全程图文 (5)
  4. 从linux刷到windows,我为什么从Linux重新回归到Windows平台
  5. 阿里云OSS云存储平台
  6. Java类加载器( 死磕9)
  7. React 学习之路 (五)事件处理
  8. 从爬取的文章 HTML 中提取出中文关键字
  9. Android 开发之 ---- 底层驱动开发(一) 【转】
  10. IOS组件绑定无效错误