硅谷bilibili官方视频教程: bilibili.com/video/b v1rv 41177 af? p=43
随着问题描述业务的发展需要,原单机引入的系统演化为分布式集群系统后,分布式系统分散在多线程、多进程和不同的机器上,使得原单机引入的并发控制锁定策略失效,成为简单的jjj 要解决此问题,需要JVM之间的互斥机制来控制对共享资源的访问。 这就是分布式锁定需要解决的问题。
分布式锁定主流实现方案:
数据库的分布式锁是基于缓存的(例如Redis )基于Zookeeper的
分布式锁定解决方案各有优缺点。 性能: redis最高可靠性: zookeeper最高
在此,我们基于redis实现分布式锁定。 实现redis分布式锁定setnx命令setnx命令设置锁定,设置锁定后,必须使用del命令解除锁定
使用上述方式的话,必须每次手动解除锁定。 我们可以在expire上设定这个锁的有效期。 没有必要每次手动解除锁定。
但是,这样不能保证操作的原子操作。 如果此服务器在安装锁定后未设置过期日期,但突然关闭,则此锁定将保持锁定状态且不会释放。 我们在锁定时同时设定锁定的有效期可以保证操作的原子性。