spring redis cluster模式下使用evalsha

使用spring封装的redis的单点模式和哨兵(sentinel)模式支持lua脚本预加载到内存中去,这样执行这个脚本的时候直接把SHA值传到redis就可以直接交到对应脚本并执行,这样能大幅度提升应用执行lua脚本的速度,但是cluster集群是不直接支持的,会直接抛异常

思路(将lua脚本加载到每个节点,然后再去执行evalsha的时候就每个节点都能找到了):

1.将lua脚本预加载到redis中

#预加载lua脚本第一种方式:使用JedisCluster

JedisCluster jedisCluster = (JedisCluster) stringRedisTemplate.getConnectionFactory().getConnection().getNativeConnection();
jedisCluster.scriptLoad(scriptStr, scriptSha1())

#预加载lua脚本第二种方式:使用Jedis

 Jedis jedis = new Jedis("127.0.0.1",6379);
 jedis.scriptLoad(scriptAsString);
 jedis.close();

2.使用JedisCluster去调用evalsha

JedisCluster jedisCluster = (JedisCluster) stringRedisTemplate.getConnectionFactory().getConnection().getNativeConnection();
        Object evalsha = jedisCluster.evalsha(scriptSha1, Arrays.asList(key), Arrays.asList(params));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值