脏读,redis分布式锁报错
报错。这个一会再说
021-01-28 20:42:32.227 [MyScheduler_Worker-3] [1;31mERROR[0;39m [36morg.quartz.core.ErrorLogger:2401[0;39m - Job (DEFAULT.org.jeecg.modules.arrive.job.ArriveTestJob threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.at org.quartz.core.JobRunShell.run(JobRunShell.java:213)at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.IllegalStateException: failed to create a child event loopat io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:88)at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:77)at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:72)at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:59)at org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:187)at org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:156)at org.redisson.connection.SingleConnectionManager.<init>(SingleConnectionManager.java:34)at org.redisson.config.ConfigSupport.createConnectionManager(ConfigSupport.java:192)at org.redisson.Redisson.<init>(Redisson.java:122)at org.redisson.Redisson.create(Redisson.java:161)at org.jeecg.modules.arrive.job.ArriveTestJob.getClient(ArriveTestJob.java:138)at org.jeecg.modules.arrive.job.ArriveTestJob.execute(ArriveTestJob.java:47)at org.quartz.core.JobRunShell.run(JobRunShell.java:202)... 1 common frames omitted
Caused by: io.netty.channel.ChannelException: failed to open a new selectorat io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:169)at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:143)at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:127)at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:36)at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)... 16 common frames omitted
Caused by: java.io.IOException: Too many open filesat sun.nio.ch.IOUtil.makePipe(Native Method)at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:65)at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:167)... 20 common frames omitted
最近在用jeecg-boot 定时任务的时候,时间间隔短,所以会出现在上条数据还没更新完,又开始查询,所以会出现推送两个条,或者多条一样的数据
所以就想用锁把当前的数据更新完,再进行查询
1.pom.xml引入redis锁
<!-- reids锁 --><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.8.2</version></dependency>
2.写静态方法
public static RedissonClient getClient() {Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6380");RedissonClient redisson = Redisson.create(config);return redisson;}
3.包裹住业务
RedissonClient redisson = PoOrderTestJob.getRedisSing();RLock lock = redisson.getLock("PoOrderTestJobLock");// 1. 尝试加锁,最多等待10秒,上锁以后10秒自动解锁try {boolean res = lock.tryLock(10, 30, TimeUnit.SECONDS);if (res) {//成功//处理业务}} catch (Exception e) {log.info("", e);} finally {lock.unlock();}
4.然后运行一会出先上面的错误
解决方法:不去每次都new,而是不会null,就去调用原来的。
private static RedissonClient redisson=null;public static synchronized RedissonClient getRedisSing(){if(redisson==null){Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6380");redisson = Redisson.create(config);}return redisson;}
避免创建太多的redis从而出现上面的报错
脏读,redis分布式锁报错相关推荐
- 记一次自定义 Redis 分布式锁导致的故障
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 背景 企微报警群里连续发出生产环境报错警告,报错核心信息如下: redis setNX ...
- 记一次自定义Redis分布式锁导致的生产事件时间
背景 企微报警群里连续发出生产环境报错警告,报错核心信息如下: redis setNX error java.lang.NumberFormatException: For input string: ...
- 记一次自定义Redis分布式锁导致的生产事件
背景 企微报警群里连续发出生产环境报错警告,报错核心信息如下: redis setNX error java.lang.NumberFormatException: For input string: ...
- 大家所推崇的Redis分布式锁真的就万无一失吗?
在单实例JVM中,常见的处理并发问题的方法有很多,比如synchronized关键字进行访问控制.volatile关键字.ReentrantLock等常用方法.但是在分布式环境中,上述方法却不能在跨J ...
- @transaction使自定义注解失效_【完美】SpringBoot中使用注解来实现 Redis 分布式锁...
一.业务背景 有些业务请求,属于耗时操作,需要加锁,防止后续的并发操作,同时对数据库的数据进行操作,需要避免对之前的业务造成影响. 二.分析流程 使用 Redis 作为分布式锁,将锁的状态放到 Red ...
- redis 分布式锁的 5个坑,真是又大又深
引言 最近项目上线的频率颇高,连着几天加班熬夜,身体有点吃不消精神也有些萎靡,无奈业务方催的紧,工期就在眼前只能硬着头皮上了.脑子浑浑噩噩的时候,写的就不能叫代码,可以直接叫做Bug.我就熬夜写了一个 ...
- 聊聊redis分布式锁的8大坑
在分布式系统中,由于redis分布式锁相对于更简单和高效,成为了分布式锁的首先,被我们用到了很多实际业务场景当中. 但不是说用了redis分布式锁,就可以高枕无忧了,如果没有用好或者用对,也会引来一些 ...
- Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)
前言 在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的. 随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中, ...
- Redis 分布式锁的正确实现原理演化历程与 Redisson 实战总结
Redis 分布式锁使用 SET 指令就可以实现了么?在分布式领域 CAP 理论一直存在. 分布式锁的门道可没那么简单,我们在网上看到的分布式锁方案可能是有问题的. 一步步带你深入分布式锁是如何一步步 ...
最新文章
- HJ29 字符串加解密
- python3的3D实战 -基于panda3d(4)
- ICCV 2021 | 通过显式寻找物体的extremity区域加快DETR的收敛
- 用canvas整个打飞机游戏
- 阿里安全图灵实验室再次刷新世界顶级算法比赛成绩
- java集合考试_java集合练习
- 数字游戏(水博客ing / csp-J T1 / luogu 5660)
- 前端学习(1985)vue之电商管理系统电商系统之本地分支放到git上面保存
- linux 禁止 密码 登陆,CentOS设置证书登录并禁止密码登录
- 道指mt4代码_道恩转债上市首日遭大股东清仓式减持!
- ossim系统下nagios监控机器可用性用rrd图形显示
- 一个中文字符占几个字节_字节与字符的关系
- 华盛顿大学计算机专业gpa,华盛顿大学计算机专业相关介绍
- 汉字拼音互相转换工具类
- 中山医06年考研初试复试全攻略!( 完整版)
- 低代码助力制造型企业——工时管理系统
- python3 pycharm 抓取app 上的数据
- linux清除firefox打开就崩溃,火狐一打开就崩溃,求解决方法!
- Processing 案例 | 用粒子系统谱写冰与火之歌
- java面试题(一)Java面试问题集
热门文章
- 在线文档管理工具都有什么值得推荐的?
- Go安装:语言环境+开发工具GoLand
- windows文件比较命令
- rstudio跑不动咋整?-------生信豆芽菜
- html调整表格位置上下左右,利用jquery实现在html的表格中使用上下左右键切换单元格,同时只限制单元格输入数字...
- paddlehub人像抠图+PIL图像处理
- if(i),if(!i)和while(i),while(!i)的理解
- JAVA面向对象编程作业(Chapter10、11)
- ValueError: Expected 2D array, got 1D array instead
- 【Java客户端访问Kafka】