3.2K Star 8.8K Fork 3.6K

GVPJFinal / JFinal

 / 详情

关于JFinal2.0 RedisPlugin的使用问题

已完成
创建于  
2015-06-30 17:48

@JFinal-[北京]

JFinal2.0 的Redis插件很多问题

  1. 首先就依赖org.nustaq.serialization.FSTObjectInput文档里面没提
  2. password 在Redis是可以为空的,应该允许传入""的password
  3. 然后连接池的创建还欠缺一些非常重要的Redis参数
timeout=3000
maxactive=20
minidle=5
maxidle=10
maxwait=1000
testwhileidle=false
testonreturn=false
testonborrow=true
//其中最后三个参数非常重要,创建Redis Connection的时候一定要传入,不然会导致JedisPool意外中断
  1. 建议RedisPlugin的Cache类中不要频繁的去close Redis的资源,既然使用连接池,那么应该是将连接释放,JedisPool提供了专门的方法
//....
finally {
    if (null != jedis)
        pool.returnResourceObject(jedis);
    }
}        

评论 (6)

感谢你对 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 做的每一个功能,写的每一行代码都是经过考虑的,再次感谢你的支持,多多提建议哈 :)

:satisfied:赞~

看到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果真是最赞的,市面上不少代码欺骗了我们~:heart_eyes:

@孤独的√3 jfinal 一直都是童叟无欺 :smiley:

如果我的redis服务需要区分database 而又没有密码 是不是就没有构造方法可以用了?

jfinal 的 RedisPlugin 是对 jedis 的封装,而 jedis 的 JedisPool 的构造方法要求当有 database 存在时就必须要有一个 password 参数,jfinal 是对其封装也不好插手改变这个行为

状态更改为 已关闭

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
840 jfinal 1580661334 372 dreamlu 1578913784 21028 larrykoo 1578915362
Java
1
https://gitee.com/jfinal/jfinal.git
git@gitee.com:jfinal/jfinal.git
jfinal
jfinal
JFinal

搜索帮助