網(wǎng)站開發(fā)技術(shù)實(shí)驗(yàn)教程seo推廣優(yōu)化的方法
在一個分布式系統(tǒng)中,由于涉及到多個實(shí)例同時(shí)對同一個資源加鎖的問題,像傳統(tǒng)的synchronized、ReentrantLock等單進(jìn)程情況加鎖的api就不再適用,需要使用分布式鎖來保證多服務(wù)實(shí)例之間加鎖的安全性。常見的分布式鎖的實(shí)現(xiàn)方式有zookeeper和redis等。而由于redis分布式鎖相對于比較簡單,在實(shí)際的項(xiàng)目中,redis分布式鎖被用于很多實(shí)際的業(yè)務(wù)場景中。
redis分布式鎖的實(shí)現(xiàn)中又以Redisson比較出名,所以本文來著重看一下Redisson是如何實(shí)現(xiàn)分布式鎖的,以及Redisson提供了哪些其它的功能。
一、如何保證加鎖的原子性
說到redis的分布式鎖,可能第一時(shí)間就想到了setNx命令,這個命令保證一個key同時(shí)只能有一個線程設(shè)置成功,這樣就能實(shí)現(xiàn)加鎖的互斥性。但是Redisson并沒有通過setNx命令來實(shí)現(xiàn)加鎖,