SpringBoot怎么使用lua脚本

  不废话 直接上代码

public class RedisScriptProvider {
    public static DefaultRedisScript<Boolean> redisScript() {
        DefaultRedisScript<Boolean> redisScript = new DefaultRedisScript<>();
        redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("/checkandset.lua")));
        redisScript.setResultType(Boolean.class);
        return redisScript;
    }
}

  

public String testRedisLua() {

        String key = "testredislua";
        DefaultRedisScript<Boolean> redisScript = RedisScriptProvider.redisScript();
        redisTemplate.delete(key);
        redisTemplate.opsForValue().set(key, "hahaha");
        String s = redisTemplate.opsForValue().get(key);

        redisTemplate.execute(redisScript, Collections.singletonList(key), "hahaha", "3333");
        s = redisTemplate.opsForValue().get(key);

        return null;
    }

  lua脚本 意思就是判断是否该key,存在并且value是用户指定的value,如果是进行替换,也就是CAS

local current = redis.call('GET', KEYS[1])
if current == ARGV[1]
  then redis.call('SET', KEYS[1], ARGV[2])
  return true
end
return false

 

posted on 2021-02-01 10:05  MaXianZhe  阅读(562)  评论(0编辑  收藏  举报

导航