redis锁

引用文献:http://doc.redisfans.com/string/set.html

本文仅是用来记录学习使用,不作他用。

SET key value [EX seconds] [PX milliseconds] [NX|XX]

可以通过以下修改,让这个锁实现更健壮:

不使用固定的字符串作为键的值,而是设置一个不可猜测(non-guessable)的长随机字符串,作为口令串(token)。

不使用 DEL 命令来释放锁,而是发送一个 Lua 脚本,这个脚本只在客户端传入的值和键的口令串相匹配时,才对键进行删除。

以下是一个简单的解锁脚本示例:

ifredis.call("get",KEYS[1])==ARGV[1]thenreturnredis.call("del",KEYS[1])elsereturn0end

这个脚本可以通过 EVAL ...script... 1 resource-name token-value 命令来调用。

你可能感兴趣的:(redis锁)