首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal redis blpop 为空的情况下报错
aaaaaaa
2019-05-18 15:03
blpop 超时后返回为空,然后就报nullpointer了
项目:
JFinal
1
评论区
JFinal
2019-05-21 10:45
单步调试找到哪个对象为 null, 分分钟就解决了,一般是配置不对
回复
aaaaaaa
2019-05-21 14:23
@JFinal
返回null值是正常的,应为用了blpop 超时后返回的值。我的意思这里报nullpoint错误不应该了
回复
JFinal
2019-05-21 14:41
这两行代码是:
List《byte[]》 data = jedis.blpop(timeout, keysToBytesArray(keys));
return keyValueListFromBytesList(data);
如果改成下面的是否满足你的需求:
List《byte[]》 data = jedis.blpop(timeout, keysToBytesArray(keys));
if (data != null) {
return keyValueListFromBytesList(data);
} else {
return null;
}
如果可以,下个版本改进这里。此外,还有没有另外的地方有类似的需求?
回复
aaaaaaa
2019-05-21 16:04
@JFinal
对的,是这样子的。
回复
aaaaaaa
2019-05-21 16:04
@JFinal
现在我必须在外层加个try catch
回复
JFinal
2019-05-21 16:23
@aaaaaaa
目前你可以创建一个 public MyCache extends Cache 在子类里面覆盖 blpop 方法,改成前面我提供的 if 判断的方式,然后配置一下即可:
Redis.setMainCache(new MyCache());
jfinal 几乎所有部分都是可以扩展的
回复
aaaaaaa
2019-05-23 11:19
Redis.setMainCache(new MyCache());
这一句是放在afterstart里面么?还是其他阶段?
回复
aaaaaaa
2019-09-25 19:07
这个问题最新版好像还没有修改
回复
发送
我要反馈
热门反馈
扫码入社