分布式锁:是进程级别的锁,用于控制多个进程对同一资源的访问。
实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁
可靠性要求:
在实现的时候要注意的几个关键点:
1、锁信息必须是会过期超时的,不能让一个线程长期占有一个锁而导致死锁;
2、同一时刻只能有一个线程获取到锁。
几个要用到的redis命令:
setnx(key, value):“set if not exits”,若该key-value不存在,则成功加入缓存并且返回1,否则返回0。
get(key):获得key对应的value值,若不存在则返回nil。
getset(key, value):将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
expire(key, seconds):设置key-value的有效期为seconds秒。
原文:https://www.cnblogs.com/lizhuxin/p/10745317.html