Redis插件的问题

代码:

配置:

blob.png

action:

2.png


问题:

1.cache.select(num) 无效, 无法选择Redis的数据库.(例如:cache.select(1) ,没有切换到第2个数据库,而是吧数据存在了第一个数据库里面)

2.存的是“helloRedis”,在服务器上显示的却是:

1.png


但前端页面上显示的值确实正确的:

3.png

评论区

JFinal

2016-07-08 14:45

select 方法只能用于 Redis.call(...) 方法之中,因为每次 redis调用 close() 方法后,select() 方法所选择的数据库又会重新回到初始化的那个库。redis有这个行为相信是为了解决线程安全问题,否则当另一个线程后续操作时,会被前面线程使用的select() 所干扰,以下是 Cache.select(int) 方法上的注释内容,建议参考一下:
注意:在 Jedis 对象被关闭时,数据库又会重新被设置为初始值,所以本方法 select(...) 正常工作需要使用如下方式之一:
1:使用 RedisInterceptor,在本线程内共享同一个 Jedis 对象
2:使用 Redis.call(ICallback) 进行操作
3:自行获取 Jedis 对象进行操作

sa

2016-07-08 15:50

谢谢~~~~!!!

JFinal

2016-07-08 22:56

@sa 相信 jedis 这样做的原因就是为了线程安全,select(int) 操作才不会影响到其它线程,redis连接池中的连接是要被回收并被其它线程重用的