redis锁

基本方式

加锁
set resource_name random_value NX PX 30000(毫秒)
解锁??需要判断是否是自己加的锁
del resource_name

lua脚本

redis2.6+版本通过EVAl和EVALSHA可以原子性执行脚本

EVAL script numkeys key[key...] arg[arg...]

script -脚本 numberkeys -键的个数 key[key...] -key列名 arg[arg...] -参数列表

EVAL "return{KEYS[1],KEYS[2],AGR[1],ARG[2]}" 2 key1 key2 first second

redis.call() / redis.pcall()

eval "return redis.call('set',KEYS[1],ARGV[1])" 1 scriptKey scriptValue

eval "return redis.call('get',KEYS[1])" 1 scriptKey scriptValue

EVALSHA

事先把lua脚本加载到redis服务端,得到sha脚本的sha1值 script load script_txt -> sha1 然后根据给定的sha1校验码,执行缓存在服务器的脚本 evalsha sha1 numberkeys key[key...] arg[arg...]

results matching ""

    No results matching ""