1、了解分布式锁的特性
- 1、锁的互斥性
- 也就是说,在任意时刻,只能有一个客户端能获取到锁,不能同时有两个或多个客户端获取到锁。
- 简单来说,就比如上厕所,一个厕所只有一个坑位,只能一个人上,不能同时两个人或多个人上。
- 2、锁的同一性
- 也就是说,锁只能被持有该锁的客户端进行删除(释放锁),不能由其他客户端删除。
- 简单俩说,就是谁加的锁,就只能谁来解锁。也就是解铃还须系铃人。
- 3、锁的可重入性
- 也就是说,持有某个锁的客户端,可以继续对该锁进行加锁,实现锁的续租。
- 简单来说,就是你上厕所的按时间收费的,时间快到了会按照时间给你续租,而会给你价钱。
- 而Redisson则会增大的你的续租次数,也就是可重入次数。但绝不收费,因为Redis是开源的嘛。
- 4、锁的容错性
- 锁超过了最大续租时间后,会自动释放锁,其他客户端会继续获得该锁,从而防止死锁的发生。
- 简单来说,比如你上个厕所上了五小时,厕管员觉得不对劲,就来测试,发现你悄悄逃票了,此时测试会自动变成解锁状态,其他人就可以去上了,只是厕管员血亏5块大洋。
2、带着几个特性去看Redisson源码
先回顾一下Redisson加解锁代码如何写的