基于redis实现分布式锁,可以通过SET NX命令,也就是当客户端需要申请锁的时候可以往redis尝试加入一个拥有唯一ID的锁变量,并通过EXPIRE设置过期时间,另外创建一个守护线程,定时检测锁的失效时间,如果锁快过期了,操作共享资源还没有完成,那么就自动对锁进行续期,重新设置过期时间;在完成对共享资源的操作后,通过编写Lua脚本判断是否为所属锁,并将其从redis删除以释放锁,释放操作具备原子性。
以上基于Redis实现分布式锁的方法已经被Redisson框架所整合,所以 可以用Redisson直接实现。
参考:详解 Redis 分布式锁的 5 种方案-腾讯云开发者社区-腾讯云【包括为什么要设置唯一ID等】