redis單進程為什么加鎖?
因為,redis是單線程,然而,是可以同時有多個客戶端訪問的,每個客戶端會有一個線程??蛻舳嗽L問之間存在競爭。
由于存在多客戶端并發,所以必須保證操作的原子性。比如銀行卡扣款問題,獲取余額,判斷,扣款,寫回就必須構成事務,否則就可能出錯。
所以,redis單進程要加鎖。在傳統單體應用單機部署的情況下,可以使用Java并發相關的鎖,如ReentrantLcok或synchronized進行互斥控制。
redis單進程為什么加鎖?
因為,redis是單線程,然而,是可以同時有多個客戶端訪問的,每個客戶端會有一個線程??蛻舳嗽L問之間存在競爭。
由于存在多客戶端并發,所以必須保證操作的原子性。比如銀行卡扣款問題,獲取余額,判斷,扣款,寫回就必須構成事務,否則就可能出錯。
所以,redis單進程要加鎖。在傳統單體應用單機部署的情況下,可以使用Java并發相關的鎖,如ReentrantLcok或synchronized進行互斥控制。