关于基于redis实现分布式锁之lua脚本优化所出现的bug
io.lettuce.core.RedisCommandExecutionException: ERR Error compiling script (new function): user_script:1: 'end' expected near 'elsereturn'//释放锁String script = "if redis.call('get',KEYS[1]) == ARGV[1]
·
io.lettuce.core.RedisCommandExecutionException: ERR Error compiling script (new function): user_script:1: 'end' expected near 'elsereturn'
//释放锁 String script = "if redis.call('get',KEYS[1]) == ARGV[1] " + "then " + "return redis.call('del',KEYS[1]) " + "else" + "return 0 " + "end"; this.redisTemplate.execute(new DefaultRedisScript<>(script), Arrays.asList("lock"), uuid);
在这里需要加入返回结果集类型,虽然不需要但是必须指定.否则会报错
this.redisTemplate.execute(new DefaultRedisScript<>(script,Boolean.class), Arrays.asList("lock"), uuid);
加入lua脚本后可以保证原子性和防误删
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)