北京手机网站,广告招商,杭州营销网站制作,建立营销网络lua脚本的特点
lua脚本可以操作redis数据库#xff0c;并且脚本中的代码满足原子性#xff0c;要么全部被执行#xff0c;要么全部不执行
lua脚本的语法 脚本示例
lua脚本的草稿#xff1a; 最终的lua脚本 lua脚本在java里调用的方法
RedisTemplete类里有一个方法并且脚本中的代码满足原子性要么全部被执行要么全部不执行
lua脚本的语法 脚本示例
lua脚本的草稿 最终的lua脚本 lua脚本在java里调用的方法
RedisTemplete类里有一个方法接收参数为
RedisScript类储存lua脚本内容List类型的 KEYS[]数组Object类型的ARGY[]数组 1.编写lua脚本文件
保存文件名为unlock.lua
if (redis.call(get, KEYS[1]) ARGV[1]) then-- 一致则释放锁return redis.call(del, KEYS[1])
end
return 0
2.把lua文件读取为redis的lua脚本也就是DefaultRedisScript类型的对象
private static final DefaultRedisScriptLong UNLOCK_SCRIPT;static {UNLOCK_SCRIPT new DefaultRedisScript();UNLOCK_SCRIPT.setLocation(new ClassPathResource(unlock.lua));UNLOCK_SCRIPT.setResultType(Long.class);
}
3.在java里执行lua脚本 Overridepublic void unlock() {stringRedisTemplate.execute(UNLOCK_SCRIPT,Collections.singletonList(KEY_PREFIX name),ID_PREFIX Thread.currentThread().getId());}
这样就把解锁变为了一个原子性的事务