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