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