首页 / REDIS / 首次使用Redis记录【3】
首次使用Redis记录【3】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了首次使用Redis记录【3】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1617字,纯文字阅读大概需要3分钟。
内容图文
![首次使用Redis记录【3】](/upload/InfoBanner/zyjiaocheng/911/3aab1edc2f264876bdcd510a7ecdd508.jpg)
根据上文配置使用后
会出现如下问题:
this.jedis = this.jedisPool.getResource();方法长时间无响应且控制台不报错,方法堵塞。
实际情况:
大概调用了该方法八九次之后就会开始堵塞,无响应。
原因:类似数据库连接池获取事务或者IO流对象,用完之后需要关闭。
解决:每次使用完资源之后关闭资源,this.jedis.close()后即可。
网上参考:
jedisPool.getResource()方法长时间无响应并且不报错,方法阻塞
??这个锅真的是蓝瘦,,,表现是项目重启后一开始可以,过段时间,哎,不行了,,,,查了一半天发现,原因在于jedis连接用完了,然后默认给阻塞了,然后直到获得连接。看下我的错误代码
//获得连接
Jedis jedis = jedisPool.getResource();
log.info("get jedis success");
jedis.set(wlId, encryUser);
jedis.expire(wlId,1800);
然后我跑了200个for循环,调用他,排查错误,大概就是到48次的时候,阻塞掉了,不报错也没反应,说明jedis连接池在我电脑配置上是开了48个以内。
查看他的官网文档,其中有一段new JedisCluster(hpset, 30)中默认了MaxWaitMillis为-1。,
BlockWhenExhausted:连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
MaxWaitMillis:获取连接时的最大等待毫秒数(如果设置为阻塞时
BlockWhenExhausted,如果超时就抛异常,小于零:阻塞不确定的时间, 默认-1
BlockWhenExhauste这个方法默认参数-1,就是说当阻塞的时候我阻塞多久啊,默认永久阻塞。而一开始没有阻塞是因为一开始连接并没有耗尽,这个就是原因所在。咱们修改配置使得阻塞短时间或者不阻塞或者在你用完jedis的时候关闭连接就好了啊,具体情况视你的业务场景而定,我是把我的连接给关闭了。
??修改后的代码
//获得连接
Jedis jedis = jedisPool.getResource();
log.info("get jedis success");
jedis.set(wlId, encryUser);
jedis.expire(wlId,1800);
//用完后乖乖的关掉,就是因为它
jedis.close();
内容总结
以上是互联网集市为您收集整理的首次使用Redis记录【3】全部内容,希望文章能够帮你解决首次使用Redis记录【3】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。