Redis运用--锁

2020-07-08  本文已影响0人  爱上西瓜霜

    锁不是我们日常运用的锁,三斤重的锁往门上一挂,谁都进不来的那种。

    程序中的锁是在执行一个可能存在冲突的操作的时候,先看看有没有人已经操作了。比如说文件锁,在更改一个数据时,先加一个文件,user_1_do.txt,当另一个人要对同样的数据进行操作,先看锁在不在,在就先歇歇,等会儿操作,不在就加锁。当做完后,把锁去掉。

    但是IO操作还是有点慢啊,所以可以使用内存,直接使用redis,方便好用。

    setnx name True。这个操作啥意思?如果name不存在就创建。set name if not exit。

    del name。就是删除

    但是问题来了,设置完锁,进行完操作,进程死了,这个锁就加上了,谁也拿不下来,完蛋了。。。。

    所以设置过期时间 expire 5。不删除5秒后自动失效。

    但是在 setnx name True 和 expire 之间,进程死了怎么办?还是删不掉。redis添加了原子操作,就像Mysql的事物一样,要么同时成功,要么同时失败。

    setnx name True ex 5 nx

    妥了。

    ------看书笔记,过些时候回头看,自己给自己找茬。

上一篇 下一篇

猜你喜欢

热点阅读