multi redis 不能使用集群_redis cluster 集群模式无法连接

g.nutz.boot.NbApp - something happen!!

org.nutz.ioc.IocException: IocBean[loglevelService -> jedisClusterWrapper -> jedisCluster] throw Exception when creating

at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:153)

at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:241)

at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)

at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:64)

at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:241)

at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:271)

at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:161)

at org.nutz.integration.jedis.JedisAgent.getJedisClusterWrapper(JedisAgent.java:66)

at org.nutz.integration.jedis.JedisAgent.jedis(JedisAgent.java:50)

at org.nutz.integration.jedis.JedisAgent.getResource(JedisAgent.java:54)

at org.nutz.integration.jedis.RedisService.getJedis(RedisService.java:34)

at org.nutz.integration.jedis.RedisService.setex(RedisService.java:759)

at org.nutz.boot.starter.logback.exts.loglevel.LoglevelService.saveToRedis(LoglevelService.java:58)

at org.nutz.boot.starter.logback.exts.loglevel.LoglevelService.init(LoglevelService.java:37)

at org.nutz.boot.starter.logback.exts.loglevel.Log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis 集群中,使用 `MULTI` 命令开启事务模式的方式与单机 Redis 类似。然而,由于 Redis 集群的特性,在事务执行期间,只能保证在同一个槽位(slot)上的键被放在同一个节点上执行,因此需要特别注意。 以下是在 Redis 集群使用 `MULTI` 命令的示例代码: ```java import redis.clients.jedis.JedisCluster; import redis.clients.jedis.Response; import redis.clients.jedis.Transaction; import java.util.List; public class RedisClusterMultiExample { public static void main(String[] args) { // 创建 JedisCluster 集群客户端实例 JedisCluster jedisCluster = new JedisCluster.Builder("host1:port1,host2:port2,host3:port3") .build(); // 开启事务 Transaction transaction = jedisCluster.multi(); // 向事务中添加命令 transaction.set("key1", "value1"); transaction.set("key2", "value2"); transaction.get("key1"); // 执行事务 List<Object> results = transaction.exec(); // 处理事务执行结果 for (Object result : results) { if (result instanceof Response) { Response<String> response = (Response<String>) result; String value = response.get(); System.out.println("Result: " + value); } } // 关闭 JedisCluster 连接 jedisCluster.close(); } } ``` 在上面的示例中,首先创建了一个 JedisCluster 集群客户端实例,然后使用 `MULTI` 命令开启事务。接下来,将需要执行的命令添加到事务中,例如 `set` 和 `get` 命令。最后调用 `exec` 方法执行事务,并获取每个命令的执行结果。 需要注意的是,在 Redis 集群中,`MULTI` 命令只能保证在同一个槽位上的键被放在同一个节点上执行,而不是全局原子性。因此,如果事务中的多个键散列在不同的槽位上,可能会导致事务失败或部分成功。 希望对你有所帮助!如果有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值