@JFinal 你好,想跟你请教个问题:jfinal2.0里 redis指定db后 为什么不生效,数据还是存在了db0
使用 select 方法指定 db 以后,如果再调用其它 Cache.xxx() 方法时,前面 select 改变的数据库会再次回到 RedisPlugin 初始化的 db 值,这是因为RedisPlugin 的 api 会在每次调用完方法后回收连接资源,而 Jedis 在回收时会重新复位 db 值。
所以,在 com.jfinal.plugin.redis.Cache.select(int databaseIndex) 方法上面有如下的注释说明了如何使用 db 值:
注意:在 Jedis 对象被关闭时,数据库又会重新被设置为初始值,所以本方法 select(...) 正常工作需要使用如下方式之一: 1:使用 RedisInterceptor,在本线程内共享同一个 Jedis 对象 2:使用 Redis.call(ICallback) 进行操作 3:自行获取 Jedis 对象进行操作
最后,指定 db 可以在构造 RedisPlugin 时来做,如果这样做,那么 db 会随着资源的回收重置为初始值。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
使用 select 方法指定 db 以后,如果再调用其它 Cache.xxx() 方法时,前面 select 改变的数据库会再次回到 RedisPlugin 初始化的 db 值,这是因为RedisPlugin 的 api 会在每次调用完方法后回收连接资源,而 Jedis 在回收时会重新复位 db 值。
所以,在 com.jfinal.plugin.redis.Cache.select(int databaseIndex) 方法上面有如下的注释说明了如何使用 db 值:
最后,指定 db 可以在构造 RedisPlugin 时来做,如果这样做,那么 db 会随着资源的回收重置为初始值。