แแญ แแฅแญ!
แแฌ Redis แ แ แแ แแ แจแฐแจแแแ แแแแแซแแฝแ แ แแฐแแ แญ แแญ แซแแแ แแตแฅแตแฅ แฝแแ แแฐ แฅแญแตแ แตแฉแจแต แฅแแแฃแแ แฅแ แตแ แฌแฒแต แฐแตแแแฝ แฅแแฐ แ แญแฅแตแต แแแแแแญ แฅแแแญแซแแแข แจแแฝแแ แฐแซแฒ แแญแฒแ แญแแแแ แจแณแฐแ แ แจ Redlock แตแแฐ แแแญ แตแแฐแ
แจแฐแจแแแ แแแแแซแแฝ แจแฐแแซแฉ แแฐแถแฝ แ แแซ แแแแแซแแฝ แแญ แฅแญแต แ แญแต แ แแฃแฃแ แแแฉ แแตแซแต แ แแแแแฃแธแ แฅแ แ แซแฃแขแแฝ แแตแฅ แฅแ แ แแญ แจแแแ แ แฃแ แ แแ แฅแแณแ แแธแ.
DLM (Distributed Lock Manager) แ แฌแฒแต แฅแแดแต แแฐแแ แญ แฅแแฐแแปแ แจแแแแน แ แญแจแต แซแ แคแฐ-แแปแแแต แฅแ แแฅแแฝ แ แแฃ แแแญ แแ แฅแซแแณแแฑ แคแฐ-แแฝแแแต แจแฐแแจ แ แซแแต แตแแแแตแต แจแแฐแ แ แแตแตแ แตแแฝ แแตแฅแตแฅ แ แแ แแตแ แแฐแจแตแ แต แจแแฝแแ แแญ แฒแแณแฐแญ แฐแซแ แแแข
แ แแ แฝแแ แแตแฅ แจแฐแจแแแ แแแแแซแ แ แฌแฒแต แฅแแดแต แแฐแแ แญ แฅแแฐแแปแ แจแแซแณแญ แแแณแ แแแแ แตแแฐ-แแแญแ แแแแแฝ แฅแแแญแซแแแข แตแ แ แแต แตแแฐ แแแญ แฅแแแแแซแแ แณแแ แแแแแซ, แจแฐแจแแแ แจแแแแแซ แ แตแฐแณแณแชแ แญแฐแแฅแซแ แฅแ, แ แฅแ แ แตแฐแซแจแต, แญแ แตแแฐ แแแญ แจแ แแต แแ แ แแณแ แแญ แจแฐแแแฐแ แ แฐแซแญ แจแ แแ แฐแ แแแฑ แจแฐแ แ แ แแ. แ แฅแจแฐแฐแก แฐแแตแแฃ แ แตแฐแซแจแต แ แแตแ แต แฅแ แแฐแแณแฐแก แแญแ แ แแซแญ แแฎแแญแถแฝ แตแแ แซ แฅแแฐ แแแป แญแ แแแ แณแ แฅแแ แฐแตแ แฅแแฐแญแแแแข
แตแแ แซ
แแฐ แ แแแชแแ แแแป แจแแแ แแ แ แแต, แแแ แแแ แ แฐแแฃแ แญ แฅแ แ แแแแฝแ แฅแแฐแฃแแ. แแแฃแแปแแต แฅแ แ แแญ แแแ แญแฝแแ.
redlock-rb (แ Ruby แตแแ แซ). แฅแแฒแแ แ แแขแนแซ แแตแญแญแต แแแแแต แฅแ แ (แแ) แจแแจแแญ Redlock-rb แฅแ แแแฝแแขredlock-py (แ Python แตแแ แซ).แ แฎแฌแตแแญ (แ Asyncio Python แตแแ แซ).redlock-php (แ PHP แตแแ แซ).PHPRedisMutex (แ PHP แแ แตแแ แซ)cheprasov / php-redis-แแแแแซ (PHP แคแฐ-แแฝแแแต แแแแ)แแญ แแแณแฐแ (แ Go แตแแ แซ)แขแซแฒแฐแ (แแแซ แตแแ แซ)แขRedis :: DistLock (แแแญแ แแฐแแ แญ).redlock-cpp (แ C ++ แตแแ แซ).redlock-cs (แ C #/.NET แตแแ แซ).RedLock.net (แ C #/.NET แตแแ แซ). แแ แตแแญ แฅแ แแแแแแซ แ แฅแซแแฝ แตแแแขแแญ แแแแแซ (แC# .NET แตแแ แซ แจแฐแแแจ แจแแแฅ แแจแแป แแญ)Redlock4Net (แ C# .NET แตแแ แซ)แแตแแแ แแญ แแแแแซ (แ NodeJS แตแแ แซ). แแแแแแซ แแซแแแซแแฝ แตแแแ แซแซแตแณแแข
แจแฐแ แแแต แฅแ แฐแแแแต แแตแตแแแฝ
แจแฐแจแแแ แแแแแซแแฝแ แ แฅแแต แแแ แแ แจแแซแตแแแแตแ แ แแตแฐแ แแตแตแแแฝ แญแฐแฃแ แฅแแ แจแแแตแ แ แถแตแต แแฅแจแถแฝ แแญ แแฎแแญแณแฝแแ แฅแแแญแแแแข
- แจแฐแ แแแต แแฅแจแตแก แจแแซ แแแแแข แ แแแแแ แแ แ แแต แฐแแ แ แฅแป แแแแแซแ แญแญแแแข
- แจแฐแฐแซแฝแแต แแฅแจแต แแก แแแ แแแแแซแแฝ แจแแแข แแฅแฑแ แจแซแแ แฐแแ แ แฃแญแณแซแ แแญแ แจแฐแแจ แจแฒแตแญ แญแแ แขแแณ แแแแแ แ แแจแจแป แแแแแซ แแแแต แตแฝแแแ แข
- แจแฐแแแแต แแฅแจแต แแก แตแ แฐแต แแปแปแแข แ แฅแแแแน Redis nodes แฅแจแฐแฉ แฅแตแจแแ แตแจแต แฐแแ แแฝ แแแแแซแแฝแ แแแแต แฅแ แแแแ แญแฝแแแข
แแแ แ แแ
แแณแญ แแญ แซแแฐแณแซ แตแแ แซ แ แ แ แญแฐแแ
แแ แฅแแฐแแแปแฝแ แแแจแณแต แ แฌแฒแต แแญ แ แแแตแจแต แ แ แฅแแแแน แคแฐ-แแปแแแต แจแฐแแแแแ แแ
แณแ แแแณ แฅแแแญแแญแข
Redisแ แ แแ แแ แแฅแตแ แแแแแ แแแ แแแแต แ แแณแแ แแตแฅ แแแ แแแ แญ แแแข แฅแแแ แแ แแแ แจแแแ แจแ แจแฐแแฐแ แจแ แญแแต แแแ แแญ แแแฃ แญแ แจแแแแ แ แฌแฒแต แแตแฅ แซแแแ แจแ แแแแแต แแฅแแซ แฃแ แช แ แแ แแ แแแฃ แตแแแ แญแแ แญแฐแญ แญแ แแแ แญแแแแ (แ แฅแ แแญแแญ แแตแฅ 2 แแฅแจแต)แข แ แแต แฐแแ แ แแฅแต แแแแ แฒแแแ แแแแ แญแฐแญแแแข
แ แ แตแ-แฅแญแณ, แญแ แแแตแ แจแแฐแซ แญแแตแแ, แแ แฝแแญ แ แ-แจแฅแ แ แญแญแดแญแธแญ แ แแต แแ แ แจแแตแแต แแฅแฅ แ แแ. แจแแต แฌแฒแต แแณแ แซแแฐแณแซ แแ แญแจแฐแณแ? แฅแแแฒแ แฐแจแณแญ แฅแแจแแญ! แฅแ แ แตแฐแแแ แจแแ แฅแแ แแแแ. แฅแแฐ แ แแแณแฐแ แแ แญแ แ แแซแญ แฐแแฃแซแ แแแ แ แญแฝแแแข แญแ แ แ แแตแจแ แแฐแ แแแต แฒแฃแ แจแแแแแแแ แจแแซ แแแแ แแฅแจแต แ แตแญแญแ แแฐแแ แญ แ แแฝแแ แแญแแซแฑแ แ แฌแฒแต แแตแฅ แแฃแแต แ แญแแณแฐแแแข
แ แแแฝ แฅแแฐแแณแจแ แฃ แจแแญ แแแณ แ แฅแแฐแแ แแญแแต แแดแ แแตแฅ แญแจแฐแณแ
- แฐแแ แ แ แ แแณแ แแญ แแแแแซ แซแแแแข
- แแฐ แแแ แแแ แแฐ แฃแชแซแ แจแแฐแแแ แ แแต แแณแ แ แแฐแณแซแ.
- แฐแจแณแญ แแฐ แแชแแต แจแ แฅแแแข
- แฐแแ แ B แ แตแแตแ แ แค แจแฐแแแแแ แ แฐแแณแณแญ แแฅแ แต แแญ แแแแแซ แซแแแแข แจแฐแ แแแต แฅแฐแต!
แ แแณแแต แแ แฅแแฐ แ แแแณแซแต แฃแ แแฉ แแแณแแฝ แแตแฅ แฅแ แฐแแ แแฝ แ แฐแแณแณแญ แแ แแแแแซแ แแญแ แแปแแธแ แ แฃแ แจแฐแแแฐ แแแข แ แฅแแฐแแ แแญแแต แแแณแแฝ, แ แแฃแแต แแญ แจแฐแแฐแจแฐ แแแตแ แแฐแแ แญ แญแฝแแ. แ แแ แแแซ แ แแ แฝแแ แแตแฅ แจแฐแแแธแแ แแแตแ แฅแแแญแซแแ.
แ แ แแต แแณแ แตแญแญแแ แ แฐแแฃแ แญ
แจแแญ แจแฐแแแธแแ แจแแ แ แแณแ แแ แญ แตแญแแถแฝแ แแแธแแ แจแแแจแญแ แ แแต แฃ แญแ แแ แแแ แแณแญ แฅแแดแต แ แตแญแญแ แแซแ แฅแแฐแแปแ แฅแแญ แฃ แแญแแซแฑแ แฅแแฒแ แแญแแฑ แแแตแ แ แฅแแแฑ แจแแตแตแญ แแแณ แจแแ แแฐ แแ แฐแแฃแญแแต แ แแฐแฅแฃแธแ แแฐแแ แชแซแแฝ แแตแฅ แฐแแฃแญแแต แซแแ แตแแแ แฅแ แฅแแฒแแ แตแ แแแต แแแข แ แแต แแ แ แแณแ แฅแแ แ แฐแแแธแ แ แฐแจแแแแ แตแแฐ แแแญ แแตแฅ แฅแ แ แแญ แจแแแ แแ แจแต แแ แซแแแแแแข
แแแแแซ แแแแแต แจแแจแฐแแตแ แซแตแญแ
SET resource_name my_random_value NX PX 30000
แญแ
แตแฅแแ แแแแ แจแแซแแแแ แ แตแแตแ แจแแ แฅแป แแ (แ แแซแญ NX)แฃ แจแแแญแ แต แแ 30000 แแแฐแจแแถแฝ (แ แแซแญ PX)แข แแแ แฐแแแฅแฏแ แแฐ "myrandomvalue
". แญแ
แแ แ แแแ แฐแแ แแฝ แฅแ แ แแแ แจแแแแแซ แฅแซแแแฝ แแญ แแฉ แแแ แ แแ แตแข
แ แแ แจแฑแฃ แจแแแแฐ แฅแดแต แแแแแซแแ แฐแ
แแแฑ แ แฐแ แ แ แแแณ แแแแแ
แฅแ
แ แแญ แญแแแแฃ แตแญแชแแฑ Redis แแแแ แซแ แฅแป แฅแแฒแฐแญแ แญแแแจแแแฃ แฅแ แ แแตแก แจแฐแแแ แ แฅแดแต แ แตแญแญแ แจแแ แ แแ แแแข แญแ
แ แแจแฐแแ แจแแ แตแญแชแแต แจแฐแแ แแแข
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
end
แ แแ แฐแแ แ แจแแแฐแต แแแแแซ แฅแแณแญแแแ
แแแจแแจแ แญแ
แ แตแแแ แแแข แแแณแแฃ แ แแต แฐแแ แ แแแแแซ แญแญแแแฃแจแแซแ แจแแแแชแซแ แแแแแซ แ แแญ แจแแแญ แ แแณแแต แตแซแแฝแ แแแแ (แแแ แแแ แจแแซแ แแ แต แแ แฅแแฒแแจแ) แฅแ แ แแ แแ แฐแแ แ แจแซแแแ แแแแแซ แซแตแแแณแแข
แฐแแ แแ แ แแ แฐแแ แ แจแฐแซแแแ แแแแแซ แแแ
แตแแแฝแ แแแ DEL แแ แแ แฐแ
แแแฑ แจแฐแ แ แ แแแข แ แฐแแซแแ, แจแแญ แซแแแ แตแญแชแแต แฒแ แแ, แฅแซแแณแแฑ แแแแแซ แ แแแแฐ แแฅแจแแแ "แจแฐแแจแ" แแ, แตแแแ
แแฐแ แฒแ แซแตแแแ แ แฐแแ แ แฅแป แแ แแตแแแต แจแแฝแแ.
แญแ แจแแแแฐ แแฅแจแแแ แแ แแแ แ แแ แต? แจ/dev/urandom 20 แฃแญแต แแแ แ แแ แต แฅแฌ แฅแแแณแแแฃ แแแญ แแ แแแฑแ แแฅแญแตแ แแแแแฝ แ แ แ แแแณ แแฉ แแแตแจแ แฅแ แแช แจแแญแ แญแ แแแแถแฝ แ แแข แแแณแแฃ RC4แ แแฐ /dev/urandom แแแซแต แฅแ แ แฅแฑ แแญ แจแฐแแฐแจแฐ แจแแธแต-แจแแแแฐ แฅแจแต แแแแจแต แฅแฉ แญแแแแข แแแ แซแ แแแตแ แ แแญแญแฎ แฐแจแแต แฅแซแต แฅแ แจแฐแแ แ แแณแแแซ แแตแฅ แจแฉแแญแต แแ แฅแแจแต แซแซแตแณแ; แฐแ แแแฑ แจแฐแ แ แ แ แญแฐแแแฃ แแ แ แ แฅแแแแน แแแณแแฝ แฅแตแจ แจแฐแแฃแญ แฐแจแ แตแจแต แแ แแฃแ แญแฝแแแข
แแแแ แจแ แญแแต แแแ แแแชแซ แจแแแ แแแ แต แแ "Lock Validity" แญแฃแแแข แญแ แแ แแแฑแ แแแแแซแ แ แซแต-แฐแญ แจแแแแ แ แต แแ แฅแ แฐแแ แ แแ แฐแแ แ แ แแแน แจแแซ แแแแแ แแตแตแ แณแญแฅแต แแฅแฑแ แจแแแแ แ แแต แฆแแฌแฝแแ แจแแแฝแแ แต แแ แแแข แญแ แแตแตแ แแฐแแฐแ แแ แฅแป แจแฐแแฐแ แแ, แญแ แ แแแแแซแ แจแฐแแแ แต แแ แแแฎ แญแแแซแ.
แตแแแ แแแแแซ แแแแแต แฅแ แแแแแ แฅแฉ แแแแต แฐแแซแญแฐแแแข แตแญแแฑ (แ แแต แฅแ แแแแ แจแแแ แแณแแ แซแซแฐแฐ แซแแฐแจแแแ แตแญแแต แฅแจแฐแแแแญแ แจแแ) แฐแ แแแฑ แจแฐแ แ แ แแแข แญแ แแ แ แแฐ-แแณแฅ แฅแแฐแแ แ แญแแต แแตแตแแแฝ แแฐแแแแ แต แจแฐแจแแแ แตแญแแต แฅแแซแแแแข
แ แแแชแแแ แฅแแฐแแ แแแแ
แจแฐแฐแซแจแ แจแ แแแชแแ แตแชแต N แแช Redis แฅแแณแแ แญแแแณแแข แฅแแแ แ แแแแฝ แ แแณแธแ แจแแแ แแ แ แแ แแ แแธแแฃ แตแแแ แแฃแแตแ แแญแ แแ แแแแแแ แตแแญ แจแแตแฐแฃแ แญ แตแญแแต แ แแ แแแแข แ แ แแต แแณแ แแญ แแแแแซแ แฅแแดแต แฐแ แแแฑ แ แฐแ แ แ แแแณ แแแแต แฅแ แแแแ แฅแแฐแแปแ แ แตแแตแแ แธแแแแแข แจแ แแต แแ แ แแณแ แแญ แฒแฐแซ แตแแฐ แแแญ แญแ แแ แแด แฅแแฐแแ แแ แฅแแฐ แฅแแแฑ แฅแแแตแณแแ. แ แแณแแแปแฝแ แแตแฅ N แแฐ 5 แฅแแตแแแฃแแ, แญแ แ แแนแ แแญแแซแณแ แฅแดแต แแ. แฅแแฐแแ 5 แฌแฒแต แแตแฐแญแต แ แฐแแซแฉ แแฝแแฝ แแญแ แจแญแฝแแ แแฝแแฝ แแญ แฅแญแต แ แญแต แ แฐแแฅแ แฅแแฒแ แฉ แแตแจแ แ แแฅแแข
แแแแแซ แแแแแต แฐแแ แแ แจแแจแฐแแตแ แฐแแฃแซแต แซแจแแแแ:
- แจแ แแแ แแ แ แแแฐแจแแถแฝ แซแแแแข
- แ แ แฐแ แฐแจแฐแ แ แแแ แจ N แแณแฎแฝ แแญ แฐแแณแณแญ แแแ แตแ แฅแ แจแแแแฐ แฅแดแถแฝแ แ แแ แแ แ แแแ แจ N แ แแฃแแแฝ แแญ แแแแแซ แแแแแต แญแแญแซแแข แ แฐแจแ 2 แแญ แแแแแซแ แ แแฐแ แแแต แฒแแฐแญแฑ แฐแแ แแ แแแแแซแแ แแแแแต แแแแจแตแ แญแ แแแ, แญแ แ แแแแแซแ แ แซแต-แฐแญ แจแฐแแแแ แต แแ แแญ แฒแแแแญ แ แฃแ แ แญแญ แแ. แแแณแ แจแแแแ แแ 10 แฐแจแแต แจแแ, แแแแจแฑ แ ~ 5-50 แแแฐแจแแถแฝ แแตแฅ แแแ แญแฝแแ. แญแ แซแแฐแณแซแ Redis node แแแตแจแต แ แแแจแญ แฐแแ แแ แแจแ แ แแ แณแแถ แจแแแญแ แตแ แแแณ แซแตแแแณแ: แแณแแ แจแแ, แจแแซแ แ แฐแปแ แแฅแแต แจแแ แแณแ แแญ แแแแแแต แฅแแแญแซแแ.
- แแแแแซ แแแแฐแต แฐแแ แแ แแ แซแ แ แแ แฅแแณแแ แซแฐแแ; แญแ แแ แแแตแจแ แ แฐแจแ 1 แจแฐแแแแ แจแแ แแ แฐแ แ แแ แซแแ แจแแ แฅแดแต แญแแแณแแข แฐแแ แแ แ แ แฅแแแแน แ แแฃแแแฝ แแแแแซแแ (แขแซแแต 3) แแแแต แจแปแ แฅแ แจแแฐแฐแแ แ แ แแแญ แแ แแแแแต แจแปแ แฅแป แแแข แแแแแซ, แจแแแแแซแ แแ แซแแฐ, แจแแแแแซแ แแข แฅแแฐแฐแแธแ แญแแ แซแ.
- แแแแแซ แจแฐแแแฃ แ แฐแจแ 3 แแญ แจแฐแฐแแแ แซแแแแ แแ แฒแแแต แจแแแแแซแ แแญแณ แจแแแแชแซ แแ แฅแแฐ แแแแแซแ แแ แญแแฐแณแแข
- แฐแแ แแ แ แแ แแญแแซแต แแแแแซแ แแแแต แซแแปแ (แแญ N/2+1 แ แแฃแแแฝแ แแแแ แซแแปแ แแญแ แจแแแแแซ แแญแณแ แ แแณแ แแ แจแฐแแ) แแแแ แ แแฃแแแฝ แแแญแแต แญแแญแซแ (แแแ แฅแแณแ แฅแแแซแ แฃ แฅแแฐ แญแณแฐแฅ แแ แญ, แแแต แ แญแฝแแ).
แ แแแชแแ แ แแฐแแณแฐแแ?
แญแ แตแแฐ-แแแญ แจแฐแแฐแจแฐแ แแแ แแฐแถแฝ แฅแแฒแฐแฉ แจแฐแแณแฐแ แฐแแต แฃแญแแญแ แ แฅแซแแณแแฑ แแฐแต แแตแฅ แซแแ แจแ แซแฃแข แฐแแต แ แแแ แ แฐแแณแณแญ แแฅแแต แญแแตแณแ, แฅแ แตแ แฐแฑ แจแฐแแแแ แต แ แ แแ แแ แแญ แฒแแปแธแญ แ แแตแฐแ แแ. แ แซแต-แฐแญ แญแแแแ. แญแ แแแต แ แฐแซ แฎแแแแฐแฎแฝ แแตแฅ แซแแ แแแณ แแญ แ แฃแ แฐแแณแณแญ แแ-แฅแซแแณแแฑ แฎแแแฉแฐแญ แจแ แซแฃแข แฐแแต แ แแ, แฅแ แ แฅแแแแ แแ แ แฎแแแฉแฐแฎแฝ แแซแจแ แซแแ แจแแ แแฉแแต แตแแฝ แแ แฅแแ แแ แ แ แฅแแฝแแแ.
แ แแ แแฅแฅ แแญ แตแแฅแญแต แ แญแต แแแแ แแแฝแ แจแ แแ แแแฝ แแแ แ แแฅแแก แฅแญแต แ แญแต แแแแ แจแแจแแแ แ แฐแแ แแ แแแแแซแ แ แฐแจแแแ แ แต แแ (แญแ แแ แ แฐแจแ 3 แแญ แจแฐแแ แแ) แจแแฃ แฅแป แแ, แจแฐแแฐแ แฐแจแแช แแ แฒแแแต แฅแป แแ. (แ แ แ แแแญ แ แแฐแถแฝ แแซแจแ แซแแแ แจแแ แแแแจแต แแแซแซแต แฅแแต แแแฐแจแแถแฝ)แข
แจแแจแฐแแ แ แตแฐแณแฝ แแฃแฅแ แจแแ แแฉแแตแ แแตแฐแฃแ แญ แตแแแซแตแแแแธแ แตแญแแถแฝ แจแ แแ แญแแแซแ
แแตแแต แแญ แฅแแฐแแ แญแแญแฉ
แ แแต แฐแแ แ แแแแแซ แแแแต แฒแซแ แฐแ แ แแแแฐ แแแแจแต แ แแ แฅแแฐแแ แแแจแญ แ แแ แตแค แญแ แจแแฐแจแแ แ แฐแแณแณแญ แแฅแต แแญ แ แฐแแณแณแญ แแ แแแแแซ แแแแแต แจแแแญแฉ แฅแ แฐแแ แแฝ แฅแแณแญแแณแฐแ แแแตแจแ แแ (แญแ แ แ แธแแแแฝ แแฐแแแ แต "แจแฐแจแแแ-แ แแแ" แแแณแ แซแตแจแตแแ)แข แฅแแฒแแแฃ แฐแแ แแ แ แ แฅแแแแน แจแฌแฒแต แ แแฃแแแฝ แแญ แแแแแซ แแแแแต แ แแฅแแต แ แแแญแญ แแ แแฃ แจแ แแแฎ แแแณ แจแแแ แญแ แต แแตแฎแต แฅแจแ แ แ แญแแณแ (แฅแ แฅแแฐแแ แจแแแจแญ แแแแต แญแแแณแ)แข แตแแแ แฃ แ แแณแฅ แฐแจแแฃ แฐแแ แแ แแฃแแตแ แ แแ แแ แจSET แตแแแแฝแ แแฐ N แ แแฃแแแฝ แแแแญ แ แ แแต แแ แแแจแญ แ แแ แตแข
แฅแแ แแญ แ แ แแแต แแตแ แต แฐแแข แแ แฅแ แแแแฝแ แแแแต แซแแปแ แฐแแ แแฝ แแแแแซแแฝ (แ แจแแ) แซแแแตแ แแแ แ แแแแณแธแ แ แแฅแฑ แแญ แซแแ แแแแแซ แฅแแฐแแ แจแแแแฑ แ แแต แแแ แฅแตแชแซแ แ แตแจแต แแ แ แ แ แญแแญแฃแธแแ (แแแ แฅแแณแ แแตแแญแญ แจแแ) แแจแแแ แญแจแฐแณแ , แฅแ แฐแแ แแ แจ Redis แ แแฃแแแฝ แแญ แซแแแ แแแแแต แซแฃแ, แจแแซ แแแ แแแ แฅแตแชแซแแ แตแจแต แ แแ แฃแ แ แแญ แฅแซแ แจแฐแแแแต แฅแฐแต แ แฃแต แแญแแ แ แแฅแแต).
แแแแ แ แแแ
แแแแแซแ แแแแ แฐแแ แแ แ แแตแ แจแฐแแฐแ แแณแ แ แฐแณแซ แแแณ แแแแ แขแฝแแ แฃแญแแตแแ แแแแ แ แแฃแแแฝ แฅแแฒแจแแฑ แจแแแแ แแแ แญแแ แแแข
แจแฐแ แแแต แแแต
แ แแแชแแ แฐแ แแแฑ แจแฐแ แ แ แแ? แ แฐแแซแฉ แแแณแแฝ แแตแฅ แแ แฅแแฐแแแ แญ แแแแแต แฅแแแญแญ.
แ แแแแชแซแฃ แฐแแ แแ แ แ แฅแแแแน แ แแฃแแแฝ แแแแแซ แแแแต แฅแแฐแปแ แฅแแตแฅแข แฅแซแแณแแฑ แ แแฃแแแฝ แแแแ แฐแแณแณแญ แจแ
แญแแต แแแ แซแแ แแแ แญแญแแแข แแแญ แแ แฅแซแแณแแณแธแ แฅแแแ
แแแแฝ แ แซแณแธแ แแ แฐแญแแแ, แตแแแ
แ แฐแแซแจ แแ แแตแฅ แจแ แแแแแต แแแ แซแ แแ. แแ แจแแแแชแซแ แแแ แจ T1 แ แฃแฐ แแ แจแฐแแแ (แจแแแแชแซแแ แ แแแแญ แจแแแแณแฝแ แ แแต แจแแแแญแ แ แแ) แฅแ แจแแจแจแปแ แแแ แจ T2 แ แฃแฐ แแ แฐแแแ
แทแ (แจแแจแจแปแ แแแฝ แจแฐแฐแ แ แต แแ) แ แแแแญ แฐแแฅแแ)แฃ แจแแซ แ แตแฅแตแก แแตแฅ แซแแ แจแแแแชแซแ แแแ แแแ แจแแซแแแ แต แขแซแแต แฅแแฐแแแญ แฅแญแแ แ แแ MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT
. แแแ แแแฝ แแแแฝ แ แแ แแแซแธแ แซแ แแแฃ แตแแแ
แแแ แแแแฝ แขแซแแต แแแ
แแ แ แฐแแณแณแญ แแ แจแแฐแฉ แแแแธแแ แฅแญแแ แแฝ แแแ แฅแแฝแแแแข
แ แฅแแแแน แแแแฝ แแญ แฅแแฐแแ แ แแแฉแ แต แแแฃ N/2+1 SET NX แญแแแแฝ แจ N/2+1 แแแแฝ แซแ แแณแซ แตแแแญแฝแ แแ แฐแแ แ แแแแแซแแ แแแแต แ แญแฝแแแข แตแแแ
, แ แแด แแแแแซ แจแฐแแ, แ แฐแแณแณแญ แแ แฅแแฐแแ แแแแต แ แญแปแแ (แญแ
แจแแซ แแแแ แแฅแจแตแ แญแฅแณแ).
แแแแฃ แ แฐแแณแณแญ แแ แแแแแซ แแแแแต แจแแแญแฉ แฅแ แฐแแ แแฝ แ แฐแแณแณแญ แแ แแณแซแแธแ แฅแแฐแแญแฝแ แแจแแแฅ แฅแแแแแแแข
แฐแแ แแ แ แฅแแแแนแ แ แแฃแแแฝ แจแจแแฐแแ แจแแแแแซ แแญแณ แแ แ แแญ แแญแ แจแแซ แ แแญ แจแแแแแฃ แแแแแซแแ แซแ แแธแแ แฅแ แ แแฃแแแฝแ แญแจแแณแแข แตแแแ
, แฐแแ แแ แจแแญแณ แแ แฃแแฐ แแ แแตแฅ แ แฅแแแแนแ แ แแฃแแแฝ แแแต แจแปแแ แตแ แแแณ แฅแป แแแต แแตแฅ แแตแแฃแต แ แแฅแ. แ แแ
แแณแญ แแญ, แจแแญ แซแแแ แญแญแญแญ แ แฐแแแจแฐ, แ แแแ MIN_VALIDITY
แแแ แฐแแ แ แแแแแซแแ แแแถ แแแแต แแปแ แจแแ แตแแข แตแแแ
แฃ แฅแ แฐแแ แแฝ แจ N/2+1 แ แแฃแแแฝแ แ แฐแแณแณแญ แแ แแแแ แจแแฝแแต (แ แฐแจแ 2 แแจแจแป แแญ แแ) แฅแแแฝแ แจแแแแ แแ แจแฒแฒแคแ แแ แจแ แแ แ แแแแ แต แแ แฅแป แแแฃ แ แแ
แ แแแแแซแแ แแ แซแณแฃแแแข
แฅแ แแฐแ แ แจแแ แจแฐแ แแแต แแจแแแซ แแตแ แตแฃ แซแแตแ แฐแแณแณแญ แตแแฐ แแแฎแฝ แแ แแ แแญแ แจแแญ แซแแแ แตแ แฐแต แแแแต แตแฝแแแ ?
แจแฐแฐแซแฝแแต แแแต
แจแตแญแ แฑ แแแแต แ แถแตแต แแ แแ แฃแ แชแซแต แแญ แจแฐแแฐแจแฐ แแ.
- แแแแแซแ แ แซแต-แฐแญ แแแแ (แแแแน แตแแแซแแ)แก แ แแจแจแป แแแแน แแแแแ แฅแ แ แแญ แฅแแฒแแ แฅแแฐแแ แญแแแแข
- แฅแแแ แแ แฐแแ แแฝ แจแแแแแ แแแแแซ แณแญแแ แฒแแญ แแญแ แฒแแ แฅแ แฅแซแ แฒแ แแแ แแแแแซแแฝแ แ แแแณแต แฅแญแต แ แญแต แแจแณแณแต; แตแแแ แแแแ แฅแแฐแแ แแแแแต แแแแน แฅแตแชแซแแ แตแจแต แแ แ แ แจแแฅแแ แแแต แแแข
- แ แแต แฐแแ แ แแแแแซแ แแแแแต แฅแแฐแแ แแแจแญ แฒแแแแฃ แฅแ แแแแแซแแฝแ แแแแแต แจแแซแตแแแแ แแ แ แ แแแซแแแต แจแแ แซแ แแ แญแ แฅแแแข แญแ แ แแฅแต แแญแญแญ แแตแฅ แจแฐแจแแ แจแ แแแ แแแณ แฅแตแแ แญแแแณแแข
แแแญ แแแฃ แแฐแแแฐ แ แ แญแฆแต แ แฃแต แแญแแ แ แแฆแตแฃ แ แแตแแญแญ แญแแแฝ แแตแฅ แจ TTL แแ แแญ แฅแฉแ แแแฃ แตแแแ แแฃแญ แญแแแฝ แซแแฃ แญแ แ แฃแต แซแแฐแแฐแ แแแ แญแฝแแแข แญแ แจแแแแ แ แแต แฐแแ แ แแแแแซ แฃแแ แแฅแญ แฅแ แจแแซ แจแแแแ แ แแต แแฐ แแ แญแแ แฒแแญแฝ แแแข
แ แแญแ แฐแจแแฃ แแแแซ แจแแแธแ แแฃแญ แจแ แแณแจ แแจแฅ แญแแแฝ แซแแฃ แตแญแแฑ แแแฐแแฐแ แแ แจแแญแแ แแ แแแญ แญแฝแแแข
แ แแปแธแแฃ แ แแแณแซแต แฅแ fsync
แฅแ แฐแแฝ Redisแ แจแแ แแแต แแแแ แ แแแแฉ แจแแฐแ แ แแแแ แตแแแแแแฃ แแแแแซแแฝแ แแแแแต แฅแ แแแแแ แจแแซแตแแแแ แแแแจแต แ แแแญ แฅแแฒแแ แ แดแฎแแต แจแแ แแแแตแ แจแแแแต/แจแแแแ แตแซแแฝ แฅแแตแข แญแ แแ แแตแแญแต แแแแแต แจN Redis แ แแแแฎแฝ แแญ แจแแแฃแฃแต แแแแจแตแ แแแแแต แจแแซแตแฝแ แตแแต แ แแข แญแ แจแแฃแแต แตแแต แแ (แแญแ "แจแตแ แฐแ แแฃแแต" แถแฌแฑ แแฐ แแแต แแแณ แจแฐแแแ แจแ แตแฃ แแแแ แตแฅแแแฝ แญแแซแ แฅแ แตแฅแแแนแ แ แแ แซแแฅแฃแแฃ แญแ แ แ แฐแแ แแ แฅแ แ แฅแซแแณแแฑ แ แแฃแ แแซแจแ แซแแ แจแแญ แแ แแ แฐแแณแณแญ แแ แฐแฅแ แญแณแฐแฃแแข ).
แแแญ แแแฃ แ แ แแซแซ แแตแแต แแแถ แแแ แแดแ แแแแ แญ แจแแแแ แจแจแ แ แแ แจแแจแ แแจแแป แแแตแ แ แแข
แ แแ แจแฑแฃ แแณแฉแ แแแฅแซแซแตแฃ แฌแฒแตแ แซแแแแ แฝแแต แฅแซแแแญแ แแ แฅแแ แฅแแตแฅแข แฐแแ แแ แจ3 แ แแฃแแแฝ 5แฑแ แแแต แญแฝแแแข แฐแแ แแ แแซแแฑแต แจแปแแต แแแณแแฝ แแตแฅ แ แแฑ แฅแแฐแแ แฐแแแฏแ แฃ แ แแ แแ 3 แฐแแณแณแญ แแฅแถแฝ แฅแแฐแแ แญแณแซแ แฃ แฅแ แแแจแแญแแ แฅแแฝแแแ แฃ แฅแ แแแแ แฐแแ แ แ แฐแซแ แฐแแ แฅแแฐแแ แจแแแจแแ แแณแ แ แแแแต แจแแแแแซ แ แแแญแแตแ แจแแแตแฐแแ แจแฐแ แแแต แแฅแจแฑแ แญแฅแณแแข
แ แตแแตแแ
แณแณ (AOF) แซแแแ
แแแณแ โโแ แตแแน แญแปแปแแแข แแแณแ แจ SHUTDOWN แตแแแ แ แแตแ แต แฅแ แฅแแฐแแ แ แแตแแแญ แ แแแแญแ แแตแฐแแแ
แญแฝแแแข แ แฌแฒแต แแตแฅ แซแแต แจแแฅแแซ แตแซแแฝ แ แตแญแแ แฐแจแ แฐแแฃแซแ แตแแแแ แ แแแแฉ แขแ แแ แแ แแแฑแ แตแแแแฅแ แแแ แแแแถแปแฝแ แฅแฉ แแธแแข แแฐแ แ แแแแต แฅแตแซแ แตแจแต แแฐแ แแข แจแแฅแซแต แแแซแจแฅ แแ แแตแจแ แ แแ แต? Redis แ แแฃแชแแต แจแฐแแแจ แ แฒแตแญ แแญ แ แจแฐแจแแฑ fsync แ แแแณแฐแแฃ แจแณแแ แแตแแแญ แ แแ แแแแฝแ แ แ แแญแแ แญแฝแแแข แ แแตแ แแณแฅแฃ แ แแแแแ แจแ แฅแแต แแแณ แแญ แจแแแแแซแแฝแ แฐแ
แแแต แแจแแแฅ แจแแแแ แแซแฐแต แ แแฅแ fsync=always
แแจแ
แ แแ แจแแแฅ แแจแแป แ
แแฅแฎแฝ แแตแฅ. แญแ
แแ แ แแ แ แแปแธแแ แญแแตแแ, แฅแแฐแแ
แซแ แจแฒแ แตแญแแถแฝ แฐแจแ, แญแ
แ แ แฐแแแถ แจแฐแจแแแ แแแแแซแแฝ แฐแ
แแแฑ แจแฐแ แ แ แตแแ แซ แฅแ
แ แแญ แญแแแ.
แแแญ แแ แแแณแ โโแ แแแแชแซ แฅแญแณ แจแแณแจแ แจแฐแปแ แแ. แ แแญแ แฐแจแแฃ แจแ แแแชแแ แฐแ แแแต แฐแ แฅแ แญแแซแ แแญแแซแฑแ แ แแต แแณแ แจแฐแณแซ แ แแ แฅแแฐแแ แฒแแแญ แ แแ แฃแแ แแแแแซ แแตแฅ แ แญแณแฐแแแข
แญแ แแ แแแจแแแฅแฃ แจแฐแณแซแแ แ แแแฃ แแณแแ แจแแแ แแแ แต แจแแฐแ TTL แ แตแแน แ แแฆ แแแจแฑแ แฅแป แแจแแแฅ แ แแฅแแข แตแแแ แแตแแต แ แแจแฐแตแ แต แแ แแ แจแแ แฉแตแ แแแแ แแแแฝ แจแแฅแแซ แแ แฅแ แ แแถแแฒแญ แแแแ แ แฅแแ แฅแแแแข
แจแแแจ แณแแ แแตแแแญแ แ แแ แแ แ แแญแ แฐแจแ แ แฌแฒแต แแตแฅ แจแจแ แ แแ แฝแแต แฃแญแแญแ แฐแ แแแตแ แแแแต แญแปแแแข แญแแ แฅแแ แญแ แฐแฐแซแฝแแตแ แ แแฃแต แ แฃแต แแซแตแจแตแ แฅแแฐแแฝแ แแฅ แญแ แแข แแแณแแฃ แ แฅแแแ แ แแฃแแแฝ แซแแฐแณแฉ แตแญแแฑ แแฒแฒแคแ แแ แ แ แแ แ แแ แฐแจแ แจแแญแแ แญแแแ (แฅแ แ แแ แแ แแแ แ แญแแต แแฅแ แต แแณแแต แ แญแฝแแ)แข
แจแ แแแชแแแ แฐแแแแต แแปแปแ: แแแแแซแแ แแซแแ
แ แฐแแ แแฝ แจแแ แซแ แฅแซ แ แแตแฐแ แฐแจแแแฝแ แซแแ, แแฃแชแแ แจแแแแแซ แแ แแแแต แฅแ แแแแแซแแฝแ แแแซแแ แแดแ แแฐแแ แญ แญแปแแ. แ แแญแ แฐแจแแฃ แฐแแ แแ แ แตแแถแฝ แจแฐแ แแฐ แฅแ แจแแแแแซ แแแ แแ แ แ แฐแแ แแแณ แจแแแฐ แแแ แ แแแ แซแ แฅแ แฅแดแฑ แ แแแ แจแฐแแแ แจแแแแฐ แฅแดแต แจแแ แจ TTL แแแแ แจแแซแซแแ แแแแ แแแณแแฝ แจแแ แตแญแชแแต แแแญ แญแฝแแแข แแแแแซแ แฒแแ.
แฐแแ แแ แ แตแแ แจแฐแแแแ แแแแแซ แ แ แแแแแต แแ แแตแฅ แ แฅแแแนแ แแณแฎแฝ แ แฐแณแซ แแแณ แจแแแ แ แแ แฅแป แแ แจแแซแตแ แแข
แฅแแแต แแ, แ แแแชแแ แ แดแญแแซแแแต แ แญแแแฅแ, แตแแแ
แแแแแซแแฝแ แแแแแต แจแแฐแแ แจแตแแ แแจแซแแฝ แฅแแต แแตแ แแแ แ แแ แต, แ แแ แแแซ แจแฐแฐแซแฝแแต แฃแ
แชแซแฑ แญแฃแณแ.
แแแญ: hab.com