范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java实战指南使用单例及管道优化Redis连接资源过多问题

  前言:
  不知不觉,距离自己高考已经过去了小8个年头啦,时光飞逝呀!祝大家都可以活成自己在当年想活成的样子,不忘初心!ok!进入正题,在开始正文前我们先简单介绍一下单例模式和Redis管道操作
  在Java设计模式中,单例模式是一个比较简单且常用的一种软件设计模式,它的定义也很简单且直接:单例对象的类只能允许一个实例存在。单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。Redis管道操作:
  很多人一直以来对 Redis 管道其实有一个误解,以为这是 Redis 服务器提供的一种加速 Redis的存取效率的能力。但是实际上 Redis 管道 (Pipeline) 本身并不是 Redis 服务器直接提供的技术,这个技术本质上是由客户端提供的,跟服务器没有什么直接的关系。
  Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。
  比如我们完成3条命令操作:
  客户端要经历了写-读 写-读 写-读 3个操作 3次IO 才完整地执行了多条指令。
  Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。这样就可以大幅节省 IO 时间。管道中指令越多,效果越好。
  需求背景:
  最近开发的一个需求,有这大量频繁的Redis操作,当操作频繁且数据量每次写入的数据量较大的时候为了避免读写超时的大KEY 我采用了将大量数据切割分批读写然后在内存中进行拼接 然后就开始频繁的报错redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool 连接数太多,导致无法从池中获取资源;解决方案:
  1、增加连接最大超时时间:timeout = 2000;
  2、之前的redis操作是架构提供的一个工具类,有一个扩展的方法,可以创建一个jedispool连接池,但是用起来发现并不是单例模式,依然会报连接太多等异常,所以需要自己写一个简约型的单例模式;    private JedisPool jedisPool = null;  public synchronized Jedis initJedis() {         if (null == jedisPool) {             jedisPool = redisConnectionCustom.getJedisPool();         }         log.info("当前Redis连接池资源:空闲连接数:[{}] | 阻塞连接数:[{}] | 使用连接数:[{}]", jedisPool.getNumIdle(), jedisPool.getNumWaiters(), jedisPool.getNumActive());         log.info("当前Redis连接池资源: 获取连接平均等待时间:[{}]ms | 获取连接最大等待时间:[{}]ms", jedisPool.getMeanBorrowWaitTimeMillis(), jedisPool.getMaxBorrowWaitTimeMillis());         return jedisPool.getResource();     }
  3、大数据量操作,采用分割操作,使用管道进行批量读写:/**      * Hash 批量异步Set      *      * @param key      * @param value      * @param expireTime 过期时间      */     public void hmset(String key, Map value, int expireTime) {         Pipeline pipelined = null;         Jedis jedis = null;         try {             jedis = initJedis();             pipelined = jedis.pipelined();             if (value.size() < 5000) {                 pipelined.hmset(key, value);             } else {                 List> maps = splitMap(value, 5000);                 for (Map map : maps) {                     pipelined.hmset(key, map);                 }             }         } catch (Exception e) {             log.error("hmset is Fail!", e);         } finally {             if (pipelined != null) {                 if (expireTime > 0) {                     pipelined.expire(key, expireTime);                 }                 pipelined.sync();             }             if (jedis != null) {                 jedis.close();             }          }     }
  分割集合:/**      * 分割 map      *      * @param map 数据集      * @param pageSize 分割后大小      * @param       * @param       * @return      */     private static  List> splitMap(Map map, int pageSize) {         if (map == null || map.isEmpty()) {             return Collections.emptyList();         }         pageSize = pageSize == 0 ? 5000 : pageSize;         List> newList = new ArrayList<>();         int j = 0;         for (Map.Entry entry : map.entrySet()) {             if (j % pageSize == 0) {                 newList.add(new HashMap<>());             }             newList.get(newList.size() - 1).put(entry.getKey(), entry.getValue());             j++;         }         return newList;     }
  之后查看Redis的连接数
  至此问题解决,测试中也再也没有报过 连接数太多的异常
  ok!文章到此就结束了,希望可以对大家有帮助,有不对的地方希望大家可以提出来的,共同成长;
  风雨兼程,逆水行舟,祝学子们高考加油!
  整洁成就卓越代码,细节之中只有天地
  作者:云朵YD
  链接:https://juejin.cn/post/6971242891868340261

如何选择百搭T恤,七款T恤上身试穿告诉你前言大家好,我是小猴。随着温度逐渐走出冬日的寒意,即将到来的炎热夏季和温暖春天为我们穿上漂亮的衣服出门踏青郊游提供了很好的条件。作为内穿百搭的白T恤又成为了取代保暖内衣的不二之选,百元烤箱怎么选,教你玩转烘焙学会选择烤箱写在前面大家好,我是小猴。爱生活,爱烘焙。自从有了孩子之后,外出吃饭的机会逐渐减少,取而代之的是更多陪伴孩子的时间。孩子的成长过程中美食也是必不可少的环节,还记得小时候一个月父母才百元顶配无线耳机SoundpeatsTrueAir2旗舰前言大家好,我是小猴。春暖花开,正是一年之计最美好的季节。经常和家人一起外出游玩,不经意间我戴的无线蓝牙耳机就会被妈妈问到好用不好用。家母是一名音乐爱好者,喜欢参加合唱团唱歌,日常从出发检查到行车救援,假期自驾出行看这一篇就够了前言大家好,我是小猴。随着假期的来临,想必不少准备自驾出行的朋友都已经摩拳擦掌准备出发的东西了。与乘坐高铁,飞机不同,假期自驾出行时间长,遇上假期高速免费,一次说走就走的旅程如果不36岁宝宝百看不厌的书单,近期买过看过的好书推荐前言大家好,我是小猴。孩子的成长离不开图书的陪伴,图书不仅能够带给孩子知识,还能够在轻松的氛围中让孩子主动学习。因此,选择一套好的图书对孩子的成长起着至关重要的作用。家里宝宝从小我百元内性价比之选雷蛇蝰蛇标准版游戏鼠标体验前言大家好,我是小猴。尽管如今无线鼠标的使用逐渐普及,不过传统有线鼠标依然是不可或缺的存在,尤其是游戏领域的专业鼠标品牌,其专精于游戏体验的专长使得有线鼠标依然有着旺盛的生命力。这口腔小助手,便携功能强素诺C3pro冲牙器写在前面大家好,我是小猴。现代人工作压力大,作息不规律,夜生活多。因此就造成了口腔疾病的频发,不管是疏于管理口腔卫生造成的龋齿,还是经常抽烟喝酒造成的黄斑牙以及口臭,都会对我们的形教你如何选择烤箱,只选对的不选贵的,用大数据说话前言大家好,我是小猴。烤箱作为家庭必备小家电,如今早已成为了我们生活中不可或缺的一部分,不管是日常烘焙糕点,还是制作烤肉烤蔬菜,还是利用烤箱的空炸功能制作健康低油脂的食品都为我们提三分钟热的烘焙玩家,烤箱到底应该怎么选?前言大家好,我是小猴。最近沉迷烘焙,于是又入手了一款新的烤箱。这是在我纠结了很久之下才买的烤箱。如果你和我一样是个选择困难症,那么可以看看我是怎么选择烤箱的。尽管之前家里买过好几个绿叶蔬菜非常适合雾培种植模式,金字塔式雾培支架帮您改良种植。设施构成金字塔式雾培设施由槽体支架栽培底槽三角形定植板小型定植杯防渗膜及给回液管路雾化喷头定时器等组成。设施用途,适用领域。叶菜的适度规模栽培草本花卉的景观化栽培脱毒马铃薯微型种薯休闲农业规划原则与功能建设,乡村旅游,乐了市民,富了农民。休闲农业规划与开发休闲农业规划应以农业生产经营活动为主体以旅游市场为主导,以创新为动力,以科学技术为依托,以农民增收为主。休闲农业以休闲观光知识采摘为载体,将相关的产业整合一起,如
不约炮的社交app,Soul能否成为孤独经济NO。1?不能,陌陌才是NO。1得女性用户者,得天下的陌生人社交的app中,这个数据无疑是高的,这种现象的背后离不开Soul给予女性的使用特权。相比于男性而言,Soul给予了女性用户很高的特想换一部两千元左右的手机,不打游戏,大神们帮忙推荐一下?realme,红米华为nova7,麒麟芯片,鸿蒙系统,2000左右,不打游戏,基本够用。我也想换手机了,这部oppor11用了5年,最近特别卡,特别是运行几个程序的时候,卡成狗,都怎么用尼康1424镜头拍摄?怎么用尼康1424镜头拍摄?尼康1424应称呼为尼克尔1424f2。8。我在使用上用的不是太多,也有过拍摄的照片。使用时,注意畸变。有畸变可以丰富照片的冲击力,使用不当使照片效果东现在数码相机功能齐全,摄影入门很低。我想问问什么是摄影?数码相机的功能很强大,设置在自动挡或程序档上,几乎不用怎么用手再做什么,只要按下快门就OK了,一张张照片就会显现在你的面前了。所以,出现了现在的全民会摄影,人人会拍照的大好局面。于怎么在手机照片上添加竖排的诗词和自己的签名?怎么在手机照片上添加竖排的诗词和自己的签名?感谢邀请。要在图片上加文字和签名,借助图片编辑工具就可以实现。最近一直在用一个叫图曰(yue)的软件。可以给照片加文字,加签名水印,贴纸有哪些令人叹为观止的手机壁纸?这些是我强烈推荐的!我个人喜欢第一张和最后一张。美如仙境绿色护眼唯美夜色童话般的雪乡夜色湖光秋色梦想就像热气球,要有热情才不会坠跌。倾听风声的狗尾巴草珍藏唯美壁纸分享1绿色养眼2风有哪些好看到舍不得换的手机壁纸?这些都是我非常喜欢的。中国红,主旋律!这是我的手机壁纸最为一个资深的龙珠迷来说,其他的一切神马都浮云,当然我空神和老贝了,不过现在已经不满足于中规中矩的龙珠图片了,现在已经越来越向挂耳不入耳,听力零损伤,SanagA5S气传导耳机体验目前的蓝牙耳机可以说是每个年轻人群甚至是老年人群的标配了,而有些喜欢运动的人群,可能不会去选择蓝牙耳机,而是选择骨传导耳机,骨传导耳机的优势是不入耳照样能够听音乐,当然最主要的还是Java工具类返回对象的封装,泛型类,泛型方法,开发必不可少本头条号主要是Java常用关键技术点,通用工具类的分享以及springbootspringcloudMybatisplusdruidmysqlredisswaggermavendo华为matepadPro128g和iPadair3价格基本一样,怎么选?一说到平板电脑,很多人都说买前生产力,买后爱奇艺,更有甚者说这是盖泡面的必备良品。那就最新发布的华为MatepadPro和iPadAir3该怎么选择?就我个人而言,我会毫不犹豫的选双11促销预售开始多款手机价格跌至新低买哪款合适?距离双11促销还有20天,电商平台的促销活动已经拉开序幕。与往年不同的是,电商平台的特价商品不需要用户抢购,采取了预售的形式。现在交纳定金,促销当天付完尾款就可以享受最低价。特意看