Jedis java.lang.Long 不能强制转换为 [B

Ale*_*ore 4 classcastexception redis jedis


我在运行此代码时收到“java.lang.ClassCastException: java.lang.Long cannot be cast to [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();
Run Code Online (Sandbox Code Playgroud)

运行此代码一切正常:

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();
    }
Run Code Online (Sandbox Code Playgroud)

这些使用过的版本:

  • Redis 3.2.4
  • 绝地客户端 2.9.0
  • JDK 1.6

小智 5

Jedis 不是线程安全的。

每次执行某些操作时,都从池中获取 jedis 实例。在关闭 jedis 实例之后,它会返回到池中