redis--分布式锁

  锁是一种安全机制。是对数据可靠性的保护。

  以前在单机部署模式的时候,常用java lock 。现在微服务的分布式。部署到不同的机器上的服务需要通过中间件进行加锁。

  最简单的模拟的场景是,两个台机子(或者两个服务)执行定时任务。本意是:这个定时任务只要执行一次就好。结果两个都执行了。

  解决方案:

    利用redis作为中间件,实现分布式锁。考虑到可能中途出错,无法释放锁的问题。

  引用老钱的话

    为了治理这个乱象,Redis 2.8 版本中作者加入了 set 指令的扩展参数,使得 setnx 和 expire 指令可以一起执行,彻底解决了分布式锁的乱象。从此以后所有的第三方分布式锁 library 可以休息了。

> set lock:codehole true ex 5 nx OK

... do something critical ...

> del lock:codehole

 

上面这个指令就是 setnx 和 expire 组合在一起的原子指令,它就是分布式锁的奥义所在。... https://juejin.im 掘金 — 一个帮助开发者成长的社区

posted @ 2018-11-01 17:35  钟政123  阅读(145)  评论(0编辑  收藏  举报