北京手机网站,嘉兴做美食图片的网站,wordpress 面包屑插件,品牌的三大核心价值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());} 
这样就把解锁变为了一个原子性的事务