2016-11-23 82 views
1


我 “java.lang.ClassCastException:java.lang.Long中不能转换为[B”,同时运行此代码:Jedis java.lang.Long中不能转换为[B

JedisPoolConfig config = new JedisPoolConfig(); 
config.setMaxIdle(10); 
config.setMinIdle(1); 
config.setMaxWaitMillis(30000); 
JedisPool jedisPool = new JedisPool(config, "localhost", 6379); 

Jedis jedis = null; 
jedis = jedisPool.getResource(); 

String msisdn = "3331122333"; 
Long balance = new Long(1000); 
int balanceValidity = 30; 

Transaction t = jedis.multi(); 
t.watch(msisdn); 
t.set(msisdn, balance.toString()); 
t.expire(msisdn, balanceValidity); 
t.exec(); 

逝去的工作正常运行此代码:

Jedis jedis = null; 
    try { 
     jedis = jedisPool.getResource(); 

     jedis.watch(msisdn); 
     jedis.set(msisdn, balance.toString());  
     jedis.expire(msisdn, balanceValidity); 
     jedis.publish("myChannel", msisdn + " " + balance.toString()); 

    } finally { 
     if (jedis != null) 
      jedis.close(); 
    } 

这些用过的vesions:

  • 的Redis 3.2.4
  • Jedis客户端2.9.0
  • JDK 1.6

回答

1

Jedis不是线程安全的。

当您进行一些操作时,每次从池中获取jedis实例。并在此之后关闭jedis实例,以便它回到池中

相关问题