redis长时间失去响应
来源:互联网 发布:win10usb端口上的电涌 编辑:程序博客网 时间:2024/05/17 00:09
今天遇到一个redis失去响应的问题,redis运行一段时间后就失去响应,控制台没有报任何错误。一开始以为是jedis的什么bug,调试了半个多小时后找到了问题的原因
public Long addToSeckillQueue(long seckillId,Long phone,Long currentTime){ Long result = 0L; try { Jedis jedis = jedisPool.getResource(); String key = "seckill:" + seckillId + ":user"; result=(Long) jedis.evalsha("3cdc7769848682856219e45de0dda868f2386c08",Arrays.asList(key),Arrays.asList("3000",currentTime.toString(),phone.toString())); } catch (Exception e) { e.printStackTrace(); } return result; }
这是一段向redis中添加用户购买商品信息的redis代码,我让这段代码连续运行50次
public static void main(String[] args) { RedisDAO redisDAO = new RedisDAO("192.168.101.128", 6379); Long phone = 120L; for (int i = 0; i < 50; i++) { phone = ++phone; Long result = redisDAO.addToSeckillQueue(1001, phone, System.currentTimeMillis()); System.out.println(result); } }
每一次运行都输出运行结果
12345678
按理说控制台应该输出1~50,但每次都是输出到8,控制台就停止输出程序没有停止也没有报任何错误,一开始以为redis挂了,但是对redis控制台输入命令一直都有响应,又想是不是redis执行lua脚本阻塞了,但是redis是单线程的,如果阻塞,redis控制台对我的命令是没有响应的.浪费半小时有终于找到原因,是我打开的redis资源没有关闭
加上try-finally关闭资源代码如下
public Long addToSeckillQueue(long seckillId,Long phone,Long currentTime){ Long result = 0L; try { Jedis jedis = jedisPool.getResource(); try { String key = "seckill:" + seckillId + ":user"; result=(Long) jedis.evalsha("3cdc7769848682856219e45de0dda868f2386c08",Arrays.asList(key),Arrays.asList("3000",currentTime.toString(),phone.toString())); } finally { jedis.close(); } } catch (Exception e) { e.printStackTrace(); } return result; }
阅读全文
0 0
- redis长时间失去响应
- CPropertySheet失去焦点后程序失去响应
- Ajax 长时间无响应问题
- IOS 失去第一响应者
- 让返回键失去响应
- Windows启动后长时间无响应
- FFmpeg长时间无响应的解决方法
- FFmpeg长时间无响应的解决方法
- FFmpeg长时间无响应的解决方法
- FFmpeg长时间无响应的解决方法
- Zeppelin执行SparkSQL长时间无响应
- 按钮失去焦点事件的响应
- ArrayList使用不当导致ListActivity失去响应
- 解决MantisBT频繁失去响应的问题
- QT widget 失去焦点不响应按键
- WPS for Linux打印失去响应问题
- 获取焦点失去焦点响应事件
- 网站失去响应 nginx服务启动失败
- 树和森林——树的同构
- Infogan-信息最大化生成对抗网络(理论部分)
- c++类和动态内存分配
- python练习题1 计算多个DNA序列中,GC比最高的序列
- LaTeX新人教程,30分钟从完全陌生到基本入门
- redis长时间失去响应
- Centos 操作集合
- 招聘会感受
- #摩尔定律的生死存亡
- PAT (Basic Level) Practise (中文) 1007
- 欢迎使用CSDN-markdown编辑器
- Delphi开发Android使用wxsqlite3为数据库加密
- (7)onetomany双向:CURD
- 用100元换10元、5元和1元的纸币共50张,能换各种纸币多少张。