@JFinal-[北京]
JFinal2.0 的Redis插件很多问题
- 首先就依赖org.nustaq.serialization.FSTObjectInput文档里面没提
- password 在Redis是可以为空的,应该允许传入""的password
- 然后连接池的创建还欠缺一些非常重要的Redis参数
timeout=3000
maxactive=20
minidle=5
maxidle=10
maxwait=1000
testwhileidle=false
testonreturn=false
testonborrow=true
//其中最后三个参数非常重要,创建Redis Connection的时候一定要传入,不然会导致JedisPool意外中断
- 建议RedisPlugin的Cache类中不要频繁的去close Redis的资源,既然使用连接池,那么应该是将连接释放,JedisPool提供了专门的方法
//....
finally {
if (null != jedis)
pool.returnResourceObject(jedis);
}
}
感谢你对 jfinal 的支持,关于三个问题,其中后两个 jfinal 必须是支持的,因为这是最基本的要求,现简要做个回答:
1:jfinal 所依赖的jar包在官方提供的下载jfinal-2.0-all.zip 中有一个文档有详细的说明,不仅有说明,而且提供了jar供直接使用
2:RedisPlugin这个类重载了很多构造方法,其中就包括不含password的构造方法,直接取用即可,这些重载方法的参数都是经过精心设计的,包括参数次序。
3:连接池创建的参数RedisPlugin直接提供的设置方法的确是不完全备,但提供了一个 getJedisPoolConfig() 方法可以很方便设置所有参数
JedisPoolConfig jc = redisPlugin.getJedisPoolConfig();
jc.setTestWhileIdle(true);
jc.setTestOnReturn(true);
jc.setTestOnBorrow(true);
由于JedisPoolConfig 的可设置的参数过多,而且直接设计成 RedisPlugin 的 set 方法也不太合适,因为需要改名,如:setJedisPoolConfigTestWhileIdle(...),并且这样的方法需要19个,所以不如直接提供一个getJedisPoolConfig()来得简单。
jfinal 做的每一个功能,写的每一行代码都是经过考虑的,再次感谢你的支持,多多提建议哈 :)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
赞~
看到jedis.close();
这块我也产生了疑惑,为什么那里直接用了close呢?
点进源码一看,果真发现了真谛
@Override
public void close() {
if (dataSource != null) {
if (client.isBroken()) {
this.dataSource.returnBrokenResource(this);
} else {
this.dataSource.returnResource(this);
}
} else {
client.close();
}
}
JFinal果真是最赞的,市面上不少代码欺骗了我们~
如果我的redis服务需要区分database 而又没有密码 是不是就没有构造方法可以用了?
jfinal 的 RedisPlugin 是对 jedis 的封装,而 jedis 的 JedisPool 的构造方法要求当有 database 存在时就必须要有一个 password 参数,jfinal 是对其封装也不好插手改变这个行为
状态更改为 已关闭
登录 后才可以发表评论