我的RedisClient.java类
@Component public class RedisDaoSupport{ private static Logger logger = LoggerFactory.getLogger(RedisDaoSupport.class); @Autowired private JedisPool jedisPool; /** * 添加key value * @param key * @param value */ public void set(String key,String value){ Jedis jedis = null; try{ jedis = jedisPool.getResource(); jedis.set(key, value); } catch(Exception e){ jedisPool.returnBrokenResource(jedis); logger.error(e.getMessage()); } finally{ jedisPool.returnResource(jedis); } } /** * 获取redis value (String) * @param key * @return */ public String get(String key){ Jedis jedis = null; try{ jedis = jedisPool.getResource(); return jedis.get(key); } catch(Exception e){ jedisPool.returnBrokenResource(jedis); logger.error(e.getMessage()); } finally{ jedisPool.returnResource(jedis); } return ""; } /** * 模糊查询所有keys 遍历所有集群redis节点,性能会比较慢 * @param pattern * @return */ public Set<String> keys(String pattern){ Jedis jedis = null; try{ jedis = jedisPool.getResource(); Set<String> set = jedis.keys(pattern); return set; } catch(Exception e){ jedisPool.returnBrokenResource(jedis); logger.error(e.getMessage()); } finally{ jedisPool.returnResource(jedis); } return null; } public Transaction multi(){ Jedis jedis = null; try{ jedis = jedisPool.getResource(); Transaction tx = jedis.multi(); return tx; } catch(Exception e){ jedisPool.returnBrokenResource(jedis); logger.error(e.getMessage()); } finally{ jedisPool.returnResource(jedis); } return null; } }
@Autowired RedisDaoSupport redisDao; String key = "XXXX"; Set<String> set = redisDao.keys(key); Transaction tx = redisDao.multi();//事务处理 for (String s : set) { tx.set(s, msg);//更新短信内容 } tx.exec();//提交事务
相关的代码就这些,其他方式都能运行,但是写事务就报错
求助!!!!
jedis2.2.1没这个问题,但jedis2.5.2有
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。