您好,欢迎访问一九零五行业门户网

解锁使用锁的正确位置图(解锁使用锁的正确位置是什么)

本文主要介绍开锁的正确位置图(什么是开锁的正确位置),下面一起看看开锁的正确位置图(什么是开锁的正确位置)相关资讯。
解锁正确的地方使用锁redis是php的好朋友。在用php写业务的过程中,有时会用到锁的概念,一个特定的行为只有一个人可以操作。php可以 不要使用内存中的锁。;t使用它和锁,使用数据库进行锁定,消耗很多。这个时候我们通常选择redis作为锁机制。redis中setnx锁最简单的数据结构是字符串。最早的时候,锁操作一般是用setnx来执行的。这个命令是:当锁不存在的时候,设置一个值,也许你会记得用expiration来增加锁的有效期。解锁操作使用del命令,伪代码如下:if(redis::setnx(i:lock use::i expire(:lock do something…redis::del(i:lock)}其实有一个问题,问题是如果setnx到期遇到碰撞等行为,也许锁就不会被释放。因此,可以存储时间戳判断长度的锁被进一步优化。官方的建议是用直接设置来实现锁。我们可以用set命令代替setnx,这是在上面的代码(redis::set(i:lock do something…redis::del(i:lock))将我的锁设置为1之后完成的,当且仅当锁不存在,过期时间为10之后设置完成。获取锁的机制是正确的,但是用del直接删除锁是错误的。这可能会导致锁定其他已删除的锁。比如我锁了10s,但是我处理了10s多。直到10s,锁自动失效,被别人锁上了。此时我的名字叫redis:再次声明:del是删除别人创建的锁。也推荐官方的解锁命令。建议使用lua脚本获取第一个,然后删除程序成为:$ = rand (1,100,000);function lock{ return::set redis(i:lock)function unlock{ $ script = if redis.call(get key { 1 })= argv { 1 }然后返回redis . call(删除其他并返回0 end ` return: redis: eval ($ script,i lock} if }标签是随机数,使用锁时使用mine:锁定押金中的令牌,解锁,在第一个令牌中获得锁,如果我要删除标签,也是一样,在我的设置中锁定,否则;对此我为力。所以唐 t使用setnx重用设置直接锁定。以上是本文的全部内容,希望能对你有所帮助,也希望你多多支持。
了解更多开锁的正确位置图(什么是开锁的正确位置)相关内容请关注本站点。
其它类似信息

推荐信息