复述,怎么加锁?

  

这篇文章主要介绍了复述,加锁的方法,具有一定借鉴价值,需要的朋友可以参考下。如下资料是关于的详细步骤内容。

复述,怎么加锁?”> <br/> </p> <p> <强>复述,加锁分类</强> </p> <p>复述能用的的加锁命令分表是增加,SETNX,集<br/> </p> <p> <强>第一种锁命令增加</强> </p> <p>这种加锁的思路是,关键不存在,那么关键的值会先被初始化为0,然后再执行增加操作进行加一。<br/>然后其它用户在执行增加操作进行加一时,如果返回的数大于1,说明这个锁正在被使用当中。</p> <p> 1,客户端一个请求服务器获取关键的值为1表示获取了锁</p> <p> 2,客户端B也去请求服务器获取关键的值为2表示获取锁失败</p> <p> 3,客户端一个执行代码完成,删除锁</p> <p> 4,客户端B在等待一段时间后在去请求的时候获取关键的值为1表示获取锁成功</p> <p> 5,客户端B执行代码完成,删除锁</p> <pre类=复述→美元增加(关键);   复述→美元到期(键,ttl美元);//设置生成时间为1秒以前

<强>第二种锁SETNX

这种加锁的思路是,如果关键不存在,将关键设置为价值

如果关键已存在,则SETNX不做任何动作

1,客户端一个请求服务器设置键的值,如果设置成功就表示加锁成功

2,客户端B也去请求服务器设置键的值,如果返回失败,那么就代表加锁失败

3,客户端一个执行代码完成,删除锁

4,客户端B在等待一段时间后在去请求设置键的值,设置成功

5,客户端B执行代码完成,删除锁

复述→美元SETNX(键,价值美元);   复述→美元到期(键,ttl美元);

<强>第三种锁设置

上面两种方法都有一个问题,会发现,都需要设置关键过期。那么为什么要设置关键过期呢?如果请求执行因为某些原因意外退出了,导致创建了锁但是没有删除锁,那么这个锁将一直存在,以至于以后缓存再也得不到更新。于是乎我们需要给锁加一个过期时间以防不测。

但是借助到期来设置就不是原子性操作了,所以还可以通过事务来确保原子性,但是还是有些问题,所以官方就引用了另外一个,使用集命令本身已经从版本2.6.12开始包含了设置过期时间的功能。

1,客户端一个请求服务器设置键的值,如果设置成功就表示加锁成功

2,客户端B也去请求服务器设置键的值,如果返回失败,那么就代表加锁失败

3,客户端一个执行代码完成,删除锁

4,客户端B在等待一段时间后在去请求设置键的值,设置成功

5,客户端B执行代码完成,删除锁

复述→美元集(键,美元价值,阵列(& # 39;nx # 39; & # 39;前任# 39;=比;ttl美元));//例表示秒

上文描述的就是的详细内容,具体使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多相关内容,欢迎关注行业资讯频道!

复述,怎么加锁?