2016-12-15 10:15
@张露露 这个需要单步调试精确定定位问题,很多不用 sql server,建议去群里问问
这个问题以前没人反馈过,试试换个 jdbc 驱动
2016-12-14 22:43
多个 RedisPlugin 的用法分为三种情况:
1:每个 RedisPlugin 对象连接到不同的 redis 服务端
2:每个 RedisPlugin 对象连接到同一个 redis 服务端的不同 db
3:以上两种情况的混合
第一种情况的例子:
new RedisPlugin("r1", "192.168.1.111");
new RedisPlugin("r2", "192.168.1.222");
通过 Redis.use("r1") 就能访问 ip 后缀为 111 的服务端,通过Redis.use("r2") 就能访问 ip 后缀为 222 的服务端
第二种情况的例子:
new RedisPlugin("r1", "localhost", 6379, 3000, "myPasswrod", 1);
new RedisPlugin("r2", "localhost", 6379, 3000, "myPasswrod", 2);
以上两个 RedisPlugin 同时连接到了 localhost 这同一个服务端的不同的 database,第一个为 db 1 第二个为 db2,注意看最后一个参数就是 db 号
通过 Redis.use("r1") 可直接访问 db1,通过 RedisUse("r2") 则直接访问 db2,通过这种方式就不再需要使用 select(db) 来切换 redis 的 db
第三种情况是上面两种情况的混用,在此不在赘述
2016-12-14 20:13
@nbjgl 事务的理解没那么简单,任何数据库实现事务都是在保障数据一致性的前提下,尽可能速度快,也就是说可以不必排队就不去排,例如两个线程同时操作同一个库,但是为不同的表,又或者操作的同一张表,但不是同一条记录,又或是同一条记录但不是同一个字段,必然会针对性能搞出一整套理论
2016-12-14 11:05
@jacok 多说一句,直接用 Redis.use().select(n) 切换这个方法切换数据库是无法使用的,因为 select(int) 这个方法中切换完成以后,会调用 jedis.close(),关联连接以后又会回到原来的数据库,相当于切换不成功, jedis 这样设计是为了线程安全,所以当某线程获取到连接的时间点是可以切换,但 close() 了以后,其它线程会再次获取到这个连接,如果不恢复到最初的 db,就会造成混乱
综上,select 这个方法本质上只有在 ICallback 接口中才可以正常使用,因为这个接口中的方法是处于一个连接中,并且处在连接关闭之前
还有一种 select 的使用方式是通过创建多个 RedisPlugin,让每一个不同的 RedisPlugin 通过不同的 db 参数连到不同的 db,这样在用的时候,不同的 Cache 天然就连到了不同的库,不用使用 select 这个方法即可实现多数据库的访问