该命令仅在密钥尚不存在时才设置key(NX选项),到期时间为30000毫秒(PX选项)。键设置为值 “myrandomvalue” 。此值必须在所有客户端和所有锁定请求中都是唯一的。
使用随机值是为了以安全的方式释放锁,实现上使用了Redis的脚本:只有当key存在且其值恰好是我期望的随机值时才删除key。这是通过以下Lua脚本完成的:
这一点很重要,这可以避免删除由另一个客户端创建的锁。例如:
ok,这样我们完成redis分布式锁的实现。你以为这样就安全了吗,接下来我们设想这样一个情况:
首先,假设我们的Redis是主从的:
这时就会同时有两把锁存在的情况。对于这种情况(非常特殊),Redis官方提供了一个叫RedLock的解决方案。
我们假设我们有N个Redis主机。这些节点完全独立,因此我们不使用复制或任何其他隐式协调系统。我们假设N = 5,这是一个合理的值,因此我们需要在不同的计算机或虚拟机上运行5个Redis主服务器,以确保它们以大多数独立的方式失败。
为了获取锁,客户端执行以下 *** 作:
我个人觉得对于小公司这还是相当昂贵的。
其他的细节请参考 redis官方文档 。你应该装单机版并且在系统服务里配置你的sql服务器名称。(如果是本地默认的服务器名称是lockhost)
如果还是提示错误,去windows->system32->drivers->etc->hosts文件用记事本打开最在下面输入你的ip和服务器名称的映射。格式:127001
(空7格)服务器名称
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)