我得到了#java; java.lang.ClassCastException: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();
Everythings正常运行此代码:
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();
}
这些使用过的部分:
答案 0 :(得分:1)
Jedis不是线程安全的。
在执行某些操作时,每次从池中获取jedis实例。之后关闭jedis实例,以便它回到池中
答案 1 :(得分:0)
redis不支持事务内部的watch命令。使用jedis对象在交易前添加watch命令。