Hey Habr!
เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบกเบฒเปเบซเปเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบฒเบเปเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฑเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ locking เปเบเบเบขเบฒเบเปเบเบเปเบเป Redis เปเบฅเบฐเปเบเบตเบเบเปเบฒเบเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบชเบปเบเปเบชเบเปเบฒเบเบเบญเบ Redis เปเบเบฑเบเบซเบปเบงเบเปเป. เบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฐเบเบปเบ Redlock เปเบเบเปเบฒเบเบฒเบกเบเบฒเบ Martin Kleppmann, เบเบนเปเบเบฝเบเบซเบเบฑเบเบชเบท "", เปเบซเป .
locking เปเบเบเบขเบฒเบเปเบกเปเบเปเบเบฑเบ primitive เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบเบตเปเปเบเปเปเบเบซเบผเบฒเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบฎเปเบงเบกเบเบฑเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบชเบฐเปเบเบฒเบฐเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ.
เบกเบตเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบฅเบฐเบเปเปเบเบงเบฒเบกเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบ DLM (Distributed Lock Manager) เปเบเบเปเบเป Redis, เปเบเปเปเบเปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฐเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบตเปเบเบงเบเปเบเบปเบฒเบชเบฐเบซเบเบญเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบญเปเบญเบเปเบเบเปเบกเบทเปเบญเบเบฝเบเบเบฑเบเบชเบดเปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเปเบเปเบงเบเบเบฒเบเบญเบญเบเปเบเบเบเบตเปเบเบฑเบเบเปเบญเบเบเบงเปเบฒเปเบฅเบฑเบเบเปเบญเบ.
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเบญเบฐเบเบดเบเบฒเบ algorithm canonical เบเบตเปเบกเบตเปเบเบทเปเบญเบเปเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบฅเบฑเบญเบเปเบเบเปเบเบเบขเบฒเบเปเบเบเปเบเป Redis. เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ algorithm เบเบตเปเปเบญเบตเปเบเบงเปเบฒ Redlock, เบกเบฑเบเบเบฐเบเบดเบเบฑเบเบเบปเบงเบเบฑเบเบเบฒเบเบฅเบฑเบญเบเบเบตเปเปเบเบเบขเบฒเบเปเบฅเบฐ, เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเปเบกเปเบเบเบญเบเปเบเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบปเบงเบขเปเบฒเบเบเบฝเบงเบเบปเบเบเบฐเบเบด. เบเบงเบเปเบฎเบปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบธเบกเบเบปเบเบเบฐเบงเบดเปเบเบฒเบฐเบกเบฑเบ, เปเบซเปเบเปเบฒเบเบดเบเปเบซเบฑเบ, เปเบฅเบฐเบเปเบฒเปเบเปเบกเบฑเบเปเบเบฑเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบทเบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบ.
เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบ
เบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเบงเปเบเบชเบนเปเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบญเบ algorithm, เบเบงเบเปเบฎเบปเบฒเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบซเบผเบฒเบเปเบขเปเบฒเบเบเปเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบฝเบกเบเปเบญเบก. เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเบญเบดเบ.
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ Ruby). เบเบฑเบเบกเบต Redlock-rb, เปเบเบดเปเบเปเบเบตเปเบกเบเบธเบ (เปเบเปเบงเบเบฐเปเบชเบตเบ) เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบญเบเบเบฒเบเปเบเบเบขเบฒเบ, เปเบฅเบฐเบเปเปเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบ.
- (เบเบฒเบเบเบฐเบเบดเบเบฑเบ Python).
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ Asyncio Python).
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ PHP).
- (เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบญเบทเปเบโเบชเปเบฒโเบฅเบฑเบ PHPโ)
- (เบซเปเบชเบฐเบซเบกเบธเบ PHP เบชเปเบฒเบฅเบฑเบเบฅเบฑเบญเบ)
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ Go).
- (เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบชเปเบฒโเบฅเบฑเบ Javaโ)โ.
- (เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบชเปเบฒโเบฅเบฑเบ Perlโ)โ.
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ C++).
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ C#/.NET).
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ C#/.NET). เบเปเบงเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ async เปเบฅเบฐ lock extensions.
- (เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบชเปเบฒโเบฅเบฑเบ C# .NET เบเบฑเบโเบเบฒเบโเปเบเบฑเบโเบฎเบฑเบโเบชเบฒโเบเปเปโเบกเบนเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโ)
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ C# .NET)
- (เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบ NodeJS). เบเบฐเบเบญเบเบกเบตเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบ locks.
เบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบ เปเบฅเบฐเบเบงเบฒเบกเบเปเบญเบก
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฐเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบญเบญเบเปเบเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเบงเบเบเบฝเบเปเบเปเบชเบฒเบกเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเบงเปเบฒเบชเบฐเบซเบเบญเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฑเปเบเบเปเปเบฒเบเบตเปเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบเปเบฒเปเบเปเบเบฒเบเบเบฐเปเบเบเบเบฐเบเบฒเบเบขเปเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ.
- เบเบฑเบเบชเบดเบเบเบงเบฒเบกเบเบญเบเปเบ: เบเบฒเบเบเบปเบเปเบงเบฑเปเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ. เปเบเปเบงเบฅเบฒเปเบเบเปเปเบเบฒเบก, เบฅเบนเบเบเปเบฒเบเบปเบเบเบฝเบงเบชเบฒเบกเบฒเบเบเบทเบฅเบฑเบญเบเปเบเป.
- Availability Property A: เบเปเปเบกเบต deadlocks. เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบชเบฐเปเบซเบกเบตเบเบตเปเบเบฐเปเบเปเบกเบฒเบฅเบฑเบญเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบฅเบนเบเบเปเบฒเบเบตเปเบฅเบฑเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบฅเบปเปเบกเปเบซเบฅเบงเบซเบผเบทเบฅเบปเบเปเบเบเบฒเบเบชเปเบงเบเบเบญเบเปเบเปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
- เบเบฑเบเบชเบดเบเบเบตเปเบกเบตเบขเบนเป B: เบเบงเบฒเบกเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบ. เบเบฒเบเปเบเบเบตเปเบชเปเบงเบเปเบซเบเปเบเบญเบเบเปเป Redis เบเปเบฒเบฅเบฑเบเปเบฅเปเบ, เบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเปเบฅเบฐเบเปเบญเบเบเบปเบงเบฅเบฑเบญเบ.
เปเบเบฑเบเบซเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบเบทเปเบเบเบนเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบงเปเบกเปเบเบเปเปเบเบฝเบเบเปเปเบเบเปเบฅเบฐเบเบตเบเบตเป
เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบเบธเบ, เปเบซเปเบงเบดเปเบเบฒเบฐเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบเบฐเบเบธเบเบฑเบเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบฅเบฑเบญเบเบเบตเปเปเบเบเบขเบฒเบเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบเบเบญเบตเบเปเบชเป Redis.
เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบฅเบฑเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเบเปเบเป Redis เปเบกเปเบเบเบฒเบเบชเปเบฒเบเบเบฐเปเบเปเบเบเบปเบงเบขเปเบฒเบ. เปเบเบเบเบปเบเบเบฐเบเบด, เบเบฐเปเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเบกเบตเบเบตเบงเบดเบเบเบตเปเบเปเบฒเบเบฑเบ, เบเบตเปเปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบซเบกเบปเบเบญเบฒเบเบธเบเบตเปเบชเบฐเบซเบเบญเบเปเบซเปเบขเบนเปเปเบ Redis, เบเบฑเปเบเบเบฑเปเบเบเปเปเบเปเบฒเบซเบผเบทเบเปเปเบกเบฒเบเบฐเปเบเบเบตเปเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒ (เบเบฑเบเบชเบดเบ 2 เปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ). เปเบกเบทเปเบญเบฅเบนเบเบเปเบฒเบเปเบญเบเบเบฒเบเบเปเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ, เบกเบฑเบเบเบฐเบฅเบถเบเบฅเบฐเบซเบฑเบ.
เบขเบนเป glance เบเปเบฒเบญเบดเบ, เบเบฒเบเปเบเปเปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเปเบญเบเบเปเบฒเบเบเบต, เปเบเปเบกเบตเบเบฑเบเบซเบฒ: เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบธเบเบเบฝเบงเบเบญเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง. เบเบฐเปเบเบตเบเบซเบเบฑเบเบเบถเปเบเบเปเบฒ Host Redis เบฅเบปเปเบกเปเบซเบฅเบง? เบเปเปเบซเปเปเบเบตเปเบกเบเปเบฒเบเบฒเบ! เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบกเบฑเบเบเปเบฒเบเบนเปเบเปเบฒเบชเบฐเปเบซเบเบตเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเป. เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเป. เปเบเบเบเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบเบฑเบเบชเบดเบเบเบฒเบเบเบปเบเปเบงเบฑเปเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเบเปเบฒเบฅเบญเบเปเบ Redis เปเบกเปเบ asynchronous.
เปเบเปเบเบญเบ, เปเบเบฎเบนเบเปเบเบเบเบฑเปเบเบเปเบฒเบง, เบชเบฐเบเบฒเบเบเบฒเบเปเบเปเบเบเบฑเบเปเบเบตเบเบเบทเปเบ:
- เบฅเบนเบเบเปเบฒ A เปเบเปเบกเบฒเบฅเบฑเบญเบเปเบเปเบกเปเบเบปเบ.
- เปเบกเปเบเบปเบเบฅเบปเปเบกเปเบซเบฅเบงเบเปเบญเบเบเบตเปเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเบฐเบเบทเบเปเบญเบเปเบเบซเบฒเบชเปเบฒเบฅเบญเบ.
- เบเบนเปเบเบดเบเบเบฒเบกเบเบทเบเปเบฅเบทเปเบญเบเปเบเบฑเบเบเบนเปเบเปเบฒ.
- เบฅเบนเบเบเปเบฒ B เปเบเปเบฎเบฑเบเบเบฒเบเบฅเบฑเบญเบเบขเบนเปเปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฝเบงเบเบฑเบเบเบตเป A เปเบเปเบฅเบฑเบญเบเปเบงเปเปเบฅเปเบง. เบเบฒเบเบฅเบฐเปเบกเบตเบเบเบงเบฒเบกเบเบญเบเปเบ!
เบเบฒเบเบเบฑเปเบเบกเบฑเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบปเบเบเบฐเบเบดเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบตเปเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบดเปเบชเบ, เปเบเบฑเปเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบฅเบง, เบฅเบนเบเบเปเบฒเบซเบผเบฒเบเบเบปเบเบชเบฒเบกเบฒเบเบเบทเบฅเบฑเบญเบเปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบง, เบเบฒเบเปเบเปเปเบเปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบเปเบฒเบฅเบญเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเป. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเปเบเปเปเบเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบเบเบปเบเบเบงเบฒเบกเบเบตเป.
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบทเบเบเปเบญเบเบเปเบงเบเบเบปเบงเบขเปเบฒเบเบเบฝเบง
เบเปเบญเบเบเบตเปเบเบฐเบเบฐเบเบฒเบเบฒเบกเปเบญเบปเบฒเบเบฐเบเบฐเบเปเปเบเบปเบเบเปเบญเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเบขเปเบฒเบเบเบฝเบงเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ, เปเบซเปเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบฒเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเปเบเปเปเบเบเบตเปเปเบกเปเบเปเบเปเปเบเปเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเปเบเบทเปเบญเบเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบญเบกเบฎเบฑเบเปเบเปเปเบเบเบฒเบเปเบงเบฅเบฒ, เปเบฅเบฐเบเปเบญเบเบงเปเบฒเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบ เบเบปเบงเบขเปเบฒเบเบเบฝเบงเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเบเบทเปเบเบเบฒเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบ algorithm เปเบเบเบขเบฒเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป.
เปเบเบทเปเบญโเปเบเปโเบฎเบฑเบ lock เปเบเปโ, เปเบฎเบฑเบโเปเบเบงโเบเบตเปโ:
SET resource_name my_random_value NX PX 30000
เบเปเบฒเบชเบฑเปเบเบเบตเปเบเบดเบเบเบฑเปเบเบฅเบฐเบซเบฑเบเบเบฝเบเปเบเปเบเปเบฒเบกเบฑเบเบเปเปเบกเบตเบขเบนเปเปเบฅเปเบง (เบเบฒเบเปเบฅเบทเบญเบ NX), เปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเบทเบเบเปเบญเบเปเบกเปเบ 30000 milliseconds (เบเบฒเบเปเบฅเบทเบญเบ PX). เบฅเบฐเบซเบฑเบเบเบทเบเบเบฑเปเบเปเบเบฑเบ โmyrandomvalue" เบเปเบฒเบเบตเปเบเบฐเบเปเบญเบเบเปเปเบเปเปเบฒเบเบฑเบเปเบเบเบธเบเบฅเบนเบเบเปเบฒ เปเบฅเบฐเบเบธเบเบเปเบฒเบฎเปเบญเบเบเปเบฅเบฑเบญเบ.
เปเบเบเบเบทเปเบเบเบฒเบเปเบฅเปเบง, เบเปเบฒเปเบเบเบชเบธเปเบกเปเบกเปเบเปเบเปเปเบเบทเปเบญเบเบปเบเบฅเปเบญเบเบขเปเบฒเบเบเบญเบเปเบ, เปเบเบเบกเบตเบชเบฐเบเบฃเบดเบเบเบญเบ Redis: เบเบฝเบเปเบเปเปเบญเบปเบฒเบเบฐเปเบเบญเบญเบเบเปเบฒเบกเบฑเบเบกเบตเบขเบนเป เปเบฅเบฐเบกเบนเบเบเปเบฒเบเบตเปเปเบเบฑเบเปเบงเปเปเบเบเบฑเปเบเปเบกเปเบเบเบฒเบกเบเบตเปเบเบฒเบเปเบงเป. เบเบตเปเปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเปเบเปเบเบปเบงเบญเบฑเบเบชเบญเบ Lua เบเปเปเปเบเบเบตเป:
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
endเบเบตเปเปเบกเปเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบฅเบฑเบญเบเบเบตเปเบเบทเปเบเบเบฅเบนเบเบเปเบฒเบญเบทเปเบเบญเบญเบเบเบฒเบเบเบฒเบเปเบเบเบเปเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เบฅเบนเบเบเปเบฒเบญเบฒเบเบเบฐเปเบเปเบฎเบฑเบ lock, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเปเบเบฑเบเบฅเบฑเบญเบเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบฒเบงเบเบงเปเบฒเบฅเบฑเบญเบเบเปเบฒเบญเบดเบ (เปเบเบทเปเบญเปเบซเปเบเบฐเปเบเบกเบตเปเบงเบฅเบฒเบซเบกเบปเบเบญเบฒเบเบธ), เปเบฅเบฐเบเปเปเบกเบฒเปเบญเบปเบฒเบฅเบฑเบญเบเบเบตเปเบฅเบนเบเบเปเบฒเบเบฒเบเบเบปเบเบงเบฒเบเปเบงเป.
เบเบฒเบเปเบเป DEL เปเบเบเบเปเบฒเบเบเบฒเบเปเบกเปเบเบเปเปเบเบญเบเปเบเปเบเบฒเบฐเบงเปเบฒเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบฅเบฑเบญเบเบเบตเปเบเบทเปเบงเปเปเบเบเบฅเบนเบเบเปเบฒเบญเบทเปเบ. เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เปเบกเบทเปเบญเปเบเปเบชเบฐเบเบดเบเบเปเบฒเบเปเบเบดเบ, เปเบเปเบฅเบฐ lock เปเบกเปเบ "เปเบเบฑเบ" เบเปเบงเบเบชเบฒเบเปเบเบเบชเบธเปเบก, เบเบฑเปเบเบเบฑเปเบเบเบฝเบเปเบเปเบฅเบนเบเบเปเบฒเบเบตเปเบงเบฒเบเปเบงเปเบเปเบญเบเบซเบเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบกเบฑเบเบญเบญเบเปเบเป.
เบชเบฐเบเบดเบเปเบเบเบชเบธเปเบกเบเบตเปเบเบงเบเบเบฐเปเบเบฑเบเปเบเบงเปเบ? เบเปเบญเบเบเบฒเบเปเบเบปเบฒเบงเปเบฒเบกเบฑเบเบเบงเบเบเบฐเปเบเบฑเบ 20 bytes เบเบฒเบ /dev/urandom, เปเบเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบงเบดเบเบตเบเบตเปเบกเบตเบฅเบฒเบเบฒเปเบเบเบซเบเปเบญเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบชเบฐเบเบฃเบดเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบญเบเปเบเบปเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบกเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบตเบเบตเปเบเบฐเปเบเปเบ RC4 เบเบฑเบ /dev/urandom เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเปเบฒเบเบเบฐเปเบช pseudo-random เบเบฒเบเบกเบฑเบ. เบเบฒเบเปเบเปเปเบเบเบตเปเบเปเบฒเบเบเบงเปเบฒเบเบฐเบเบญเบเบกเบตเบเบฒเบเบฅเบงเบกเปเบงเบฅเบฒ unix เปเบเบเบงเบฒเบกเบฅเบฐเบญเบฝเบเปเบกเปเบเบฃเบงเบดเบเบฒเบเบตเบเบงเบเบเบฑเบ ID เบฅเบนเบเบเปเบฒ; เบกเบฑเบเบเปเปเบเบญเบเปเบเปเบเบปเปเบฒเบเบตเปเบเบงเบ, เปเบเปเบกเบฑเบเบญเบฒเบเบเบฐเบเบถเปเบเบเบฑเบเบงเบฝเบเบเบฒเบเปเบเบชเบฐเบเบฒเบเบเบฒเบเบชเปเบงเบเปเบซเบเป.
เปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบฑเบเบเบฒเบเบงเบฑเบเปเบเบเบญเบฒเบเบธเบเบญเบเบเบฐเปเบเปเบญเบตเปเบเบงเปเบฒ "เบญเบฒเบเบธเบเบฒเบเบฅเบฑเบญเบ". เบกเบนเบเบเปเบฒเบเบตเปเปเบกเปเบเบเบฑเบเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเปเบญเบเบเบตเป lock เบเบฐเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบตเปเบฅเบนเบเบเปเบฒเบเปเบญเบเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบเปเบญเบเบเบตเปเบฅเบนเบเบเปเบฒเบญเบทเปเบเบชเบฒเบกเบฒเบเบฅเบฑเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเปเบ, เปเบเบเบเปเปเบกเบตเบเบฒเบเบฅเบฐเปเบกเบตเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ. เบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบตเปเปเบกเปเบเบเปเบฒเบเบฑเบเบเบฝเบเปเบเปเบเปเบญเบเบขเปเบฝเบกเบเบตเปเปเบเปเบเบญเบเบเบญเบเปเบงเบฅเบฒ, เปเบเบดเปเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบงเบฅเบฒเบเบตเปเบฅเบฑเบญเบเบเบทเบเบเบทเป.
เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเปเบกเบฒเปเบฅเบฐเบเปเบญเบ lock เปเบเป. เบฅเบฐเบเบปเบ (เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบฅเบฐเบเบปเบเบเบตเปเบเปเปเปเบเบเบขเบฒเบเบเบฐเบเบญเบเบเปเบงเบเบเบปเบงเบขเปเบฒเบเบเบฝเบงเปเบฅเบฐเบชเบฐเปเบซเบกเบตเบเบตเปเบกเบตเบขเบนเป) เปเบกเปเบเบเบญเบเปเบ. เปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบซเบเบฒเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเปเบเบชเบนเปเบฅเบฐเบเบปเบเบเบฒเบเปเบเบเบขเบฒเบ, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฑเปเบเบเปเบฒเบง.
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเป Redlock
เบชเบฐเบเบฑเบเบเบตเปเปเบเบเบขเบฒเบเบเบญเบ algorithm เบเบทเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบต N Redis masters. nodes เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบญเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบเปเบฒเปเบเป replication เบซเบผเบทเบฅเบฐเบเบปเบเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบ implicit เบญเบทเปเบเป. เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบงเบกโเปเบญเบปเบฒโเปเบฅเปเบงโเบงเบดโเบเบตโเบเบฒเบโเบเบตเปโเบเบฐโเปเบเปโเบฎเบฑเบโเบขเปเบฒเบโเบเบญเบโเปเบโเปเบฅเบฐโเบเบฒเบโเบเบปเบโเบฅเบฑเบญเบโเปเบโเบเบปเบงโเบขเปเบฒเบโเบเบฝเบงโ. เบเบงเบเปเบฎเบปเบฒเบเบญเบกเบฎเบฑเบเบงเปเบฒ algorithm, เปเบกเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเบฝเบง, เบเบฐเปเบเปเบงเบดเบเบตเบเบตเปเปเบเปเป. เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบ N เบเบฑเบ 5, เปเบเบดเปเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเปเบเป 5 Redis masters เปเบเบเบญเบกเบเบดเบงเปเบเบตเบซเบผเบทเปเบเบทเปเบญเบ virtual เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเบฐเบเบดเบเบฑเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบเบเบฑเบเปเบฅเบฐเบเบฑเบ.
เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบเบฒเบเบฅเบฑเบญเบ, เบฅเบนเบเบเปเบฒเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เปเบเปเบฎเบฑเบเปเบงเบฅเบฒเบเบฐเบเบธเบเบฑเบเปเบเบฑเบ milliseconds.
- เบเบฐเบเบฒเบเบฒเบกเบเบฒเบกเบฅเปเบฒเบเบฑเบเปเบเบทเปเบญเปเบซเปเปเบเปเบฅเบฑเบญเบเบขเบนเปเปเบเบเบธเบเบเปเบฅเบฐเบเบต N, เปเบเบเปเบเปเบเบทเปเบเบตเบเบฝเบงเบเบฑเบ เปเบฅเบฐเบเปเบฒเบชเบธเปเบกเปเบเบเบธเบเบเปเบฅเบฐเบเบต. เปเบเบเบฑเปเบเบเบญเบเบเบต 2, เปเบกเบทเปเบญเบฅเบนเบเบเปเบฒเบเบฑเปเบ lock เบเบปเบเบเบทเปเบเบเบฒเบเบเปเปเบเบปเบงเบขเปเบฒเบ, เบฅเบนเบเบเปเบฒเปเบเปเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเปเบเบทเปเบญเปเบซเปเปเบเปเบกเบฒเบกเบฑเบเบชเบฑเปเบเบเบฝเบเบเปเปเบกเบทเปเบญเบเบฝเบเปเบชเปเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบฅเบฑเบญเบเบเบฐเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเปเบฅเบเบฐเปเบงเบฅเบฒเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบกเปเบ 10 เบงเบดเบเบฒเบเบต, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบญเบฒเบเบเบฐเบขเบนเปเปเบเบฅเบฐเบเบฑเบเบเบญเบ ~ 5-50 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต. เบเบตเปเบเปเบฒเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเบฅเบฑเบญเบเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเปเบเบทเปเบญเบเบฐเบเบฒเบเบฒเบกเปเบเบปเปเบฒเบซเบฒเปเบซเบเบ Redis เบเบตเปเบฅเบปเปเบกเปเบซเบฅเบง: เบเปเบฒเบเบปเบงเบขเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบญเบทเปเบเปเบงเปเบเบปเปเบฒเบเบตเปเบเบฐเปเบงเปเบเป.
- เปเบเบทเปเบญเปเบญเบปเบฒ lock, เบฅเบนเบเบเปเบฒเบเบดเบเปเบฅเปเบงเปเบฒเปเบงเบฅเบฒเบเปเบฒเบเปเบเปเบเบปเปเบฒเปเบ; เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบกเบฑเบเบซเบฑเบเบญเบญเบเบเบฒเบเบกเบนเบเบเปเบฒเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเบเบญเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบฎเบฑเบเปเบเบเบฑเปเบเบเบญเบเบเบต 1. เบเปเบฒเปเบฅเบฐเบเบฝเบเปเบเปเบเปเบฒเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ lock เปเบเบชเปเบงเบเปเบซเบเปเบเบญเบเบเบปเบงเบขเปเบฒเบ (เบขเปเบฒเบเบซเบเปเบญเบ 3), เปเบฅเบฐเปเบงเบฅเบฒเบเบฑเบเบซเบกเบปเบเบเบตเปเบกเบฑเบเปเบเปเปเบงเบฅเบฒ. เปเบเปโเบฎเบฑเบ lock เปเบเปโ, เบซเบเปเบญเบโเบโเปโเบงเบฒโเปเบฅโเบเบฐโเปเบงโเบฅเบฒ lock เปเบเปโ, lock เปเบเปโเบเบทเบโเบเบดโเบเบฒโเบฅเบฐโเบเบฒโเปเบเปโเบฎเบฑเบโ.
- เบเปเบฒเปเบเปเบกเบฒเบฅเบฑเบญเบ, เปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฑเบญเบเบเบฐเบเบทเบเปเบญเบปเบฒเบกเบฒเปเบเบฑเบเปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฑเบญเบเบเบปเปเบเบชเบฐเบเบฑเบเบฅเบปเบเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเปเบเบเบตเปเบเบดเบเปเบฅเปเปเบเบเบฑเปเบเบเบญเบเบเบต 3.
- เบเปเบฒเบฅเบนเบเบเปเบฒเบเปเปเปเบเปเบฎเบฑเบเบฅเบฑเบญเบเบเปเบงเบเปเบซเบเบเบปเบเบเบฒเบเบขเปเบฒเบ (เบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบฅเบฑเบญเบ N/2+1 instances, เบซเบผเบทเปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฑเบญเบเปเบเบฑเบเบฅเบปเบ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฐเบเบฐเบเบฒเบเบฒเบกเบเบปเบเบฅเบฑเบญเบเบเบธเบเบเบปเบงเบขเปเบฒเบ (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเบดเบเบงเปเบฒเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเบฅเบฑเบญเบเปเบเป. ).
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเปเปเบเบปเบเบเบฑเบเบเป?
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเปเบกเปเบเบญเบตเบเปเบชเปเบเบฒเบเบชเบปเบกเบกเบธเบเบเบดเบเบฒเบเบงเปเบฒ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเปเบกเบตเปเบกเบ synchronized เบเบตเปเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบฐเปเบฎเบฑเบเบงเบฝเบ, เปเบงเบฅเบฒเบเปเบญเบเบเบดเปเบเปเบเปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบขเบนเปเปเบเบเบฑเบเบซเบงเบฐเบเบฝเบงเบเบฑเบ, เปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบกเปเบเบซเบเปเบญเบเปเบกเบทเปเบญเบเบฝเบเบเบฑเบเปเบงเบฅเบฒเบเบฑเบเบซเบกเบปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบฅเบฑเบญเบเปเบกเปเบ. เบเปเบญเบเบญเบญเบเบกเบฒเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบฒเบเบชเบปเบกเบกเบธเบเบเบดเบเบฒเบเบเบตเปเปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบเบญเบกเบเบดเบงเปเบเบตเบเบปเปเบงเปเบ: เบเบญเบกเบเบดเบงเปเบเบตเปเบเปเบฅเบฐเปเบเบทเปเบญเบเบกเบตเปเบกเบเบเปเบญเบเบเบดเปเบ, เปเบฅเบฐเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฑเบเปเบเปเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบญเบเปเบงเบฅเบฒเบฅเบฐเบซเบงเปเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบกเปเบเบเปเบญเบ.
เปเบเบเบธเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบปเบเปเบงเบฑเปเบเบฎเปเบงเบกเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบขเปเบฒเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบ: เบเบฒเบเบเบปเบเปเบงเบฑเปเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฝเบเปเบเปเบเปเบฒเบฅเบนเบเบเปเบฒเบเบท lock เบญเบญเบเบเบฒเบเปเบงเบฅเบฒเบเบตเปเบฅเบฑเบญเบเบเบทเบเบเปเบญเบ (เบเปเบฒเบเบตเปเปเบเปเบฎเบฑเบเปเบเบเบฑเปเบเบเบญเบเบเบต 3), เบฅเบปเบเบเบฒเบเปเบงเบฅเบฒเปเบเบตเปเบกเปเบเบตเบก (เบเปเบฒเบเบงเบเบเบฑเบเบซเบกเบปเบ. milliseconds เปเบเบทเปเบญเบเบปเบเปเบเบตเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเปเบงเบฅเบฒเบฅเบฐเบซเบงเปเบฒเบเบเบฐเบเบงเบเบเบฒเบ).
เบเบปเบเบเบงเบฒเบกเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเปเปเปเบเบเบตเปเบเบญเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบฅเบฐเบเบปเบเบเบฑเปเบเบเปเบฒเบงเบเบตเปเบเปเบญเบเบเบฒเบเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบเบเบญเบเบเปเบงเบเปเบงเบฅเบฒ: .
เบฅเบญเบเปเบเปเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบฅเบงเบญเบตเบเบเบฑเปเบ
เปเบกเบทเปเบญเบฅเบนเบเบเปเบฒเบเปเปเปเบเปเบฎเบฑเบ lock, เบกเบฑเบเบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบฑเบเบเปเบฒเปเบเบเบชเบธเปเบก; เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเบทเปเบญ de-synchronize เบฅเบนเบเบเปเบฒเบซเบผเบฒเบเบเบปเบเบเบตเปเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเบฐเปเบเปเบฎเบฑเบ lock เปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฝเบงเบเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ (เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบชเบนเปเบชเบฐเบเบฒเบเบฐเบเบฒเบ "split-brain" เบเบตเปเบเปเปเบกเบตเบเบนเปเบเบฐเบเบฐ). เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบกเบทเปเบญเบฅเบนเบเบเปเบฒเบเบฐเบเบฒเบเบฒเบกเบซเบฒเบเบปเบงเบฅเบฑเบญเบเปเบเบเปเบฅเบฐเบเบต Redis เบชเปเบงเบเปเบซเบเป, เบเปเบญเบเบขเปเบฝเบกเบเบตเปเปเบเบเบเบงเปเบฒเบเบตเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเบฐเบซเบกเบญเบเบชเบฒเบกเบฒเบเปเบเบตเบเบเบทเปเบเปเบเป (เปเบฅเบฐเบซเบเปเบญเบเบฅเบปเบ, เบเปเบญเบเบเบฒเบเบเบฒเบเบเบฐเบเบฒเบเบฒเบกเปเบซเบกเป). เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบฅเบนเบเบเปเบฒเบเบงเบเบเบฐเบเบฒเบเบฒเบกเบชเบปเปเบเบเปเบฒเบชเบฑเปเบ SET เปเบเบซเบฒ N instances เบเปเบญเบกเบเบฑเบเปเบเบเปเบเป multiplexing.
เบกเบฑเบเบเบธเปเบกเบเปเบฒเบเบตเปเบเบฐเปเบเบฑเปเบเบซเบเบฑเบเปเบเบดเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบญเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบฅเบนเบเบเปเบฒเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเบทเป locks เบชเปเบงเบเปเบซเบเปเปเบเบทเปเบญเบเบปเบเบฅเปเบญเบ (เบเบฒเบเบชเปเบงเบ) เบเบตเปเปเบเปเบกเบฒ, เปเบเบทเปเบญเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเปเบเปเบฒเปเบซเปเบเบฐเปเบเบซเบกเบปเบเบญเบฒเบเบธเบเปเบญเบเบเบตเป lock เบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ. (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเปเบเบเปเบเบเบเบญเบเปเบเบทเบญเบเปเบฒเบเปเบเบตเบเบเบถเปเบ, เปเบฅเบฐเบฅเบนเบเบเปเบฒเบชเบนเบเปเบชเบเบเบฒเบเบเบดเบเบเปเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ Redis, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบฑเบเปเบซเบกเปเบเบเบฐเบเบฐเบเบตเปเบฅเปเบเปเบฒเปเบซเปเบเบฐเปเบเบซเบกเบปเบเบญเบฒเบเบธ).
เบเปเบญเบ lock เปเบเป
เบเบฒเบเบเบปเบเบฅเปเบญเบเบฅเบฑเบญเบเปเบกเปเบเปเบเบฑเบเบเบฒเบเบเบณเปเบเบตเบเบเบฒเบเบเปเบฒเบเปเบเบตเปเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบปเบเบฅเบฑเบญเบเบเบธเบเบเปเบฅเบฐเบเบต, เปเบเบเบเปเปเบชเบปเบเปเบฅเบทเปเบญเบเบงเปเบฒเบฅเบนเบเบเปเบฒเบเบฐเบฅเบฑเบญเบเบเบปเบงเบขเปเบฒเบเปเบเบเบถเปเบเบขเปเบฒเบเบชเบณเปเบฅเบฑเบเบเบปเบเบซเบผเบทเบเปเป.
เบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบงเบฒเบกเบเบญเบเปเบ
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบญเบเปเบเบเป? เปเบซเปเบเบฐเบเบฒเบเบฒเบกเบเบดเบเบเบฐเบเบฒเบเบฒเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ, เปเบซเปเบชเบปเบกเบกเบธเบเบงเปเบฒเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ lock เปเบเบชเปเบงเบเปเบซเบเปเบเบญเบเบเบปเบงเบขเปเบฒเบ. เปเบเปเบฅเบฐเบเบปเบงเบขเปเบฒเบเบเบฐเบกเบตเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบญเบฒเบเบธเบเบฝเบงเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเปเบฅเบฐเบเบฐเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเปเบเบทเบเบเบดเบเบเบฑเปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบฐเบซเบกเบปเบเบญเบฒเบเบธเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเป, เบเปเบฒเบเบฐเปเบเบเปเบฒเบญเบดเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบเปเบงเบฅเบฒเบเปเปเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒ T1 (เปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบเบเปเบญเบเบเบตเปเบเบฐเบเบดเบเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบญเบดเบ), เปเบฅเบฐเบเบฐเปเบเบชเบธเบเบเปเบฒเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบเปเบงเบฅเบฒเบเปเปเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒ T2 (เปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบญเบเบฎเบฑเบ. เบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบชเบธเบเบเปเบฒเบ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบซเบกเบฑเปเบเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบญเบดเบเปเบเบเบธเบเบเบตเปเบซเบกเบปเบเบญเบฒเบเบธเบเบฐเบขเบนเปเบฅเบญเบเบขเปเบฒเบเบซเบเปเบญเบ MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. เบเบฐเปเบเบญเบทเปเบเปเบเบฑเบเปเบปเบเบเบฐเปเบปเบเบญเบฒเบเบธเปเบเบเบฒเบเบซเบผเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบถเปเบเบชเบฒเบกเบฒเบเปเบฑเปเบเปเบเปเบเปเบงเปเบฒเบเบฐเปเบเบเบฑเบเปเบปเบเบเบฐเปเบเปเปเบเปเบเปเบญเบกเบเบฑเบเปเบเบฑเบเปเบงเบฅเบฒเบขเปเบฒเบเปเปเบญเบเบเบตเป.
เปเบเบฅเบฐเบซเบงเปเบฒเบเปเบงเบฅเบฒเบเบตเปเบเบฐเปเบเบชเปเบงเบเปเบซเบเปเบเบฑเบเบเบปเบเปเบเปเปเบเป, เบฅเบนเบเบเปเบฒเบญเบทเปเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ lock เปเบเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ N/2+1 SET NX operations เบเปเปเบชเบฒเบกเบฒเบเบชเบณเปเบฅเบฑเบเปเบเปเบเปเบฒ N/2+1 key เบกเบตเบขเบนเปเปเบฅเปเบง. เบเบฑเปเบเบเบฑเปเบ, เปเบกเบทเปเบญเปเบเป lock เปเบเป, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบเปเบกเบฒเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ (เบเบตเปเบเบฐเบฅเบฐเปเบกเบตเบเบเบฑเบเบชเบดเบเบเบฒเบเบเบปเบเปเบงเบฑเปเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ).
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบฅเบนเบเบเปเบฒเบซเบผเบฒเบเบเบปเบเบเบตเปเบเบฐเบเบฒเบเบฒเบกเบเบทเป lock เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ.
เบเปเบฒเบฅเบนเบเบเปเบฒเปเบเปเบฅเบฑเบญเบเบเบปเบงเบขเปเบฒเบเบชเปเบงเบเปเบซเบเปเปเบงเปเบเบฐเบกเบฒเบ เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฑเบญเบเบชเบนเบเบชเบธเบ, เบกเบฑเบเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเบฅเบฑเบญเบเบเปเปเบเบทเบเบเปเบญเบ เปเบฅเบฐเบเบปเบเบฅเบฑเบญเบเบเปเบฅเบฐเบเบต. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเปเบฒเบเบถเบเปเบเบดเบเบเปเบฅเบฐเบเบตเบเบตเปเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบชเบฐเบเบฑเบเบเบฑเปเบเบชเปเบงเบเปเบซเบเปเบเบญเบเบเบปเบงเบขเปเบฒเบเปเบเปเบงเบฅเบฒเบซเบเปเบญเบเบเบงเปเบฒเบงเบฑเบเบซเบกเบปเบเบญเบฒเบเบธ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบเปเบเบดเบ, เปเบเปเบฅเบเบฐเปเบงเบฅเบฒ MIN_VALIDITY เบเปเปเบกเบตเบฅเบนเบเบเปเบฒเปเบเบเบงเบเบเบฐเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ lock เปเบเป. เบเบฑเปเบเบเบฑเปเบ, เบฅเบนเบเบเปเบฒเบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบฐเบชเบฒเบกเบฒเบเบฅเบฑเบญเบ N / 2+1 instances เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ (เปเบเบดเปเบเบชเบดเปเบเบชเบธเบเบฅเบปเบเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบฑเปเบเบเบญเบเบเบต 2) เบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเปเบงเบฅเบฒเบเบตเปเบเบฐเบฅเบฑเบญเบเบชเปเบงเบเปเบซเบเปเบซเบผเบฒเบเบเบงเปเบฒเปเบงเบฅเบฒ TTL, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบฅเบฑเบญเบเบเปเปเบเบทเบเบเปเบญเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบฐเบซเบเบญเบเบซเบผเบฑเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบญเบเบเบงเบฒเบกเบเบญเบเปเบ, เบเบตเปเบเบญเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง, เบซเบผเบทเบเบญเบเบซเบฒ bug เปเบเบเปเบฒเบเปเบเบดเบเบเบตเป?
เบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ
เบเบงเบฒเบกเบเปเบญเบกเบเบญเบเบฅเบฐเบเบปเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบชเบฒเบกเบฅเบฑเบเบชเบฐเบเบฐเบเบปเปเบเบเป:
- เบเบปเบเบฅเปเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ (เบเปเบญเบเบงเปเบฒเบเบฐเปเบเปเบปเบเบญเบฒเบเบธ): เบเบฐเปเบเบเบฐเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบญเบตเบเบเบฑเปเบเปเบเบทเปเบญเปเบเปเปเบเบเบฒเบเบฅเบฑเบญเบ.
- เบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบฅเบนเบเบเปเบฒเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบงเบเปเบซเบผเบทเบญเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบเปเบเบเบเบฒเบเบเบญเบ locks เปเบเปเบงเบฅเบฒเบเบตเป lock เบเบตเปเบเปเบญเบเบเบฒเบเบเบฑเบเบเปเปเบเบฑเบเปเบเปเบกเบฒ, เบซเบผเบทเปเบเปเบฎเบฑเบเปเบฅเบฐเบงเบฝเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเบชเปเบฒเปเบฅเบฑเบ; เบชเบฐเบเบฑเปเบ เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเบณเปเบเบฑเบเบเปเบญเบเบฅเปเบเปเบฒเปเบซเปเบเบฐเปเบเปเบปเบเบญเบฒเบเบธเปเบเบทเปเบญเปเบซเปเปเบเปเบฅเบฑเบญเบเบเบทเบเปเปเป.
- เบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบฅเบนเบเบเปเบฒเบเปเบญเบเบเบฒเบเบเบฐเบเบฒเบเบฒเบกเบเบทเบเปเบซเบกเปเปเบเบทเปเบญเปเบซเปเปเบเปเบกเบฒเบฅเบฑเบญเบ, เบกเบฑเบเบฅเปเบเปเบฒเปเบงเบฅเบฒเบเบฝเบเบเบฝเบเบเบตเปเบเบฒเบงเบเบงเปเบฒเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเปเบซเปเปเบเปเบกเบฒเบฅเบฑเบญเบเบชเปเบงเบเปเบซเบเป. เบเบตเปเบซเบผเบธเบเบเปเบญเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเบฐเบซเบกเบญเบเปเบเบเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเปเบเปเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ.
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบตเบเบฒเบเบฅเบปเบเปเบเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเปเบญเบกเปเบเบปเปเบฒเบเบฑเบ TTL เบเบญเบเบเบฒเบเบชเปเบงเบเปเบเบทเบญเบเปเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบกเบตเบเบฒเบเบชเปเบงเบเบเบดเบเบเปเปเบเบฑเบ, เบเบฒเบเบฅเบปเบเปเบเบเบญเบฒเบเบเปเปเบกเบตเบเปเบฒเบเบปเบ. เบญเบฑเบเบเบตเปเปเบเบตเบเบเบถเปเบเบเบธเบเบเบฑเปเบเบเบตเปเบฅเบนเบเบเปเบฒเปเบเปเบฎเบฑเบ lock เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ rips เปเบเบเบฒเบเบชเปเบงเบเบญเบทเปเบเบเปเบญเบเบเบตเปเบกเบฑเบเบเบฐเบเปเบญเบเบกเบฑเบ.
เปเบเบซเบผเบฑเบเบเบฒเบ, เบเบฒเบเบชเปเบงเบเปเบเบทเบญเบเปเบฒเบเบเบตเปเบเบดเบเบเบฑเบเบเปเปเบกเบตเบเบญเบเปเบเบ, เบฅเบฐเบเบปเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบปเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเปเปเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเปเปเบกเบตเบเบญเบเปเบเบ.
เบเบฒเบเบเบฐเบเบดเบเบฑเบ, เบฅเบปเปเบกเปเบซเบฅเบงเปเบฅเบฐ fsync
เบซเบผเบฒเบเบเบปเบเปเบเป Redis เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเปเบญเบเบเบฒเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ lock เบชเบนเบเปเบเปเบเบทเปเบญเบเปเบเบเบญเบ latency เบเบตเปเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเปเบซเปเปเบเปเบกเบฒเปเบฅเบฐเบเปเบญเบ locks, เปเบฅเบฐเบเปเบฒเบเบงเบเบเบฒเบเบเบทเป / เบเปเบญเบเบเบตเปเบชเบฒเบกเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเปเปเบงเบดเบเบฒเบเบต. เปเบเบทเปเบญเบเบญเบเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเป, เบกเบตเบเบธเบเบเบฐเบชเบฒเบเบเบตเปเบเบฐเบเบดเบเบเปเปเบชเบทเปเบชเบฒเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ N Redis เปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเปเบงเบฅเบฒ latency. เบเบตเปเปเบกเปเบเบเบธเบเบเบฐเบชเบฒเบเบเบฒเบ multiplexing (เบซเบผเบท "เบเบฒเบ multiplexing เบเบนเปเบเบฒเบเบเบตเปเบเบธเบเบเบฒเบ", เบเปเบญเบเบเบตเป socket เปเบเปเบเบทเบเปเบชเปเปเบเปเบซเบกเบเบเปเปเบชเบฐเบเบฑเบ, เบชเบปเปเบเบเปเบฒเบชเบฑเปเบเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเบญเปเบฒเบเบเปเบฒเบชเบฑเปเบเบเปเปเบกเบฒ, เบชเบปเบกเบกเบธเบเบงเปเบฒเปเบงเบฅเบฒเปเบเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเปเบฅเบฐ instance เปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบ). .
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบญเบเบเปเบฒเบเบถเบเปเบเบดเบเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเปเบฅเบเบฐเบเบฒเบงเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเบฎเบนเบเปเบเบเบเบตเปเบกเบตเบเบฒเบเบเบทเปเบเบเบนเบเบตเปเปเบเบทเปเบญเบเบทเปเบเปเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบฅเบง.
เปเบเบเบเบทเปเบเบเบฒเบเปเบฅเปเบง, เปเบเบทเปเบญเบเบตเปเปเบเบเบเบฑเบเบซเบฒ, เปเบซเปเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบซเบเบปเบเบเปเบฒ Redis เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเปเบฅเบเบฐเบเบฒเบงเบเบฑเบเบซเบกเบปเบ. เบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบเบฅเบฑเบญเบ 3 เปเบ 5 เบเปเบฅเบฐเบเบต. เบซเบเบถเปเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบฅเบนเบเบเปเบฒเบเบธเปเบกเบเบญเบเปเบเบทเปเบญเบเบฅเบฑเบญเบเปเบกเปเบ restarted, เปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบตเปเบกเบต 3 เบเบปเบงเบขเปเบฒเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฝเบงเบเบฑเบ, เบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฅเบฑเบญเบ, เปเบฅเบฐเบฅเบนเบเบเปเบฒเบญเบทเปเบเบชเบฒเบกเบฒเบ, เบชเบฐเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป, เบเบฒเบเบฅเบฐเปเบกเบตเบเบเบฑเบเบชเบดเบเบเบงเบฒเบกเบเบญเบเปเบเบเบตเป. เบเบทเบงเปเบฒเบเบฒเบเบเบปเบเปเบงเบฑเปเบเบเบฒเบเบฅเบฑเบญเบ.
เบเปเบฒเบเปเบฒเบเปเบเบตเบเปเบเปเบเปเปเบกเบนเบเบฅเปเบงเบเบซเบเปเบฒ (AOF), เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฐเบเบฑเบเบเบธเบเปเบฅเบฑเบเบเปเบญเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบปเปเบเปเบชเบตเบกเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบเบฒเบเบชเบปเปเบเบเปเบฒเบชเบฑเปเบ SHUTDOWN เปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป. เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบซเบกเบปเบเบญเบฒเบเบธเปเบ Redis เปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเปเบงเบฅเบฒเบเบฑเบเบชเบทเบเบเปเปเปเบซเบผเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบทเบเบเบดเบ, เบเปเปเบเปเบฒเบเบปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบต. เบเบตเปเปเบกเปเบเปเบฅเบทเปเบญเบเบเบปเบเบเบฐเบเบดเบเบฒเบเปเบเบเบตเปเบเบฒเบเบเบดเบเบเบปเบเบเบฐเบเบดเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบ. เบเบฐโเปเบฎเบฑเบโเปเบเบงโเปเบโเปเบโเบเปโเบฅเบฐโเบเบตโเปเบโเบเปเบฒโเบซเบกเบปเบโ? เบเปเบฒ Redis เบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเบงเบ fsync synchronizing เปเบเปเบเปเบเบเบธเบเปเบงเบดเบเบฒเบเบต, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบงเปเบฒเบซเบผเบฑเบเบเบฒเบ restart เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบกเบตเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบเบเบญเบเบฅเบฑเบญเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบดเบเปเบเบตเบเบเบปเบงเบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบงเบเบเบฐเปเบเบตเบเปเบเป fsync=always เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเปเบฅเบเบฐเบเบฒเบง. เบเบตเปเบเบฐเบเปเบฒเบเบฐเบชเบดเบเบเบดเบเบฒเบเบขเปเบฒเบเบชเบปเบกเบเบนเบ, เบฅเบปเบเปเบเบดเบเบฅเบฐเบเบฑเบเบเบญเบเบฅเบฐเบเบปเบ CP เบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบฑเปเบเปเบเบตเบกเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเปเบเบเบเบฐเบเบฒเบเบขเปเบฒเบเบเบญเบเปเบ.
เปเบเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบกเปเบเบเบตเบเปเบงเบฒเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบขเบนเป glance เบเปเบฒเบญเบดเบ. เปเบเบซเบผเบฑเบเบเบฒเบ, เบเบงเบฒเบกเบเบญเบเปเบเบเบญเบ algorithm เปเบกเปเบเบเบทเบเบฎเบฑเบเบชเบฒเปเบงเปเปเบเบฒเบฐเบงเปเบฒเปเบกเบทเปเบญ instance เบเบทเบ restart เบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง, เบกเบฑเบเบเบฐเบเปเปเบกเบตเบชเปเบงเบเบฎเปเบงเบกเปเบ lock เปเบเปเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบงเปเบเบเบฑเบเบเบธเบเบฑเบ.
เปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบง, เบเบปเบงเบขเปเบฒเบเบเบฑเบเบเบปเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเปเปเบเปเบฅเบเบฐเปเบงเบฅเบฒเปเบฅเบฑเบเบเปเบญเบเปเบเบตเบ TTL เบชเบนเบเบชเบธเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเป. เบเปเบงเบเบงเบดเบเบตเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบฅเปเบเปเบฒเบเบปเบเบเปเบงเบฒเบงเบฑเบเบซเบกเบปเบเบญเบฒเบเบธเปเบฅเบฐเบเบฒเบเบเปเบญเบเบฅเบฐเบซเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเปเบเปเบงเบฅเบฒเบเบตเปเบฅเบปเปเบกเปเบซเบฅเบง.
เบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเปเบเบตเปเบเบฑเบเบเปเบฒ, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเปเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเบฅเบธเบเบงเบฒเบกเบเบญเบเปเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบเปเปเบกเบตเบเบฒเบเบเบปเบเบเบปเบเปเบเปเบฅเบเบฐเบเบฒเบงเปเบเปเปเบ Redis. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเบญเบฒเบเบเบฐเบชเบปเปเบเบเบปเบเปเบซเปเบกเบตเบเบฒเบเบเบฑเบเปเบซเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบฐเปเบกเบตเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฅเบฐเบเบตเบชเปเบงเบเปเบซเบเปเบฅเบปเปเบกเปเบซเบฅเบง, เบฅเบฐเบเบปเบเบเบฐเบเบฒเบเปเบเบฑเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเบปเปเบงเปเบฅเบเบชเปเบฒเบฅเบฑเบ TTL (เปเบฅเบฐเบเปเปเบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเปเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบชเบฐเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเป).
เบเบงเบเปเบฎเบปเบฒเปเบเบตเปเบกเบเบงเบฒเบกเบเปเบญเบกเบเบญเบ algorithm: เบเบงเบเปเบฎเบปเบฒเบเบฐเบซเบเบฒเบเบเบฒเบเบเบฑเบเบเบงเบฒเบ
เบเปเบฒเบงเบฝเบเบเบฒเบเบเบตเปเบฅเบนเบเบเปเบฒเบเบฐเบเบดเบเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบเบฑเปเบเบเบญเบเบเบฐเบซเบเบฒเบเบเปเบญเบ, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบซเบผเบธเบเบเปเบญเบเปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฑเบญเบเปเบเบเบญเบเบเบปเปเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบฒเบเบฅเบฑเบญเบ. เปเบเบซเบผเบฑเบเบเบฒเบ, เบเปเบฒเบฅเบนเบเบเปเบฒเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบญเบกเบเบดเบงเปเบเบตเปเปเบฅเบฐเบกเบนเบเบเปเบฒเบเบฒเบเบซเบกเบปเบเบญเบฒเบเบธเบเบญเบเบฅเบฑเบญเบเปเบกเปเบเบเปเปเบฒเบซเบผเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบปเปเบเบชเบฐเบเบดเบ Lua เปเบเบซเบฒเบเบธเบเปเบเบปเบงเบขเปเบฒเบเบเบตเปเบเบฐเบซเบเบฒเบ TTL เบเบญเบเบเบฐเปเบเบเปเบฒเบเบฐเปเบเบเบฑเบเบเบปเบเบขเบนเปเปเบฅเบฐเบกเบนเบเบเปเบฒเบเบญเบเบกเบฑเบเบเบฑเบเปเบเบฑเบเบเปเบฒเบชเบธเปเบกเบเบตเปเปเบเปเบฎเบฑเบเปเบกเบทเปเบญ. lock เปเบเปเบกเบฒ.
เบฅเบนเบเบเปเบฒเบเบงเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฝเบเปเบเปเบเบฒเบเบฅเบฑเบญเบเบเบตเปเบเบฐเปเบเปเบกเบฒเปเบซเบกเปเบเปเบฒเบกเบฑเบเปเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบฅเบฑเบญเบเบชเปเบงเบเปเบซเบเปเบเบญเบเบเบปเบงเบขเปเบฒเบเบเบฒเบเปเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเบทเบเบเปเบญเบ.
เปเบเปเบเบดเบเปเบฅเปเบง, เปเบเบเบฒเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบ, เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเปเปเบเปเบฝเบเปเบเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบงเบเบชเบนเบเบชเบธเบเบเบญเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเปเปเบฒเบเบฑเบเปเบเบทเปเบญเปเบซเปเปเบเป locks เบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเบเบฑเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฐเบเบทเบเบฅเบฐเปเบกเบตเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
