ืืื ืืืจ!
ืืืื ืื ื ืืืืืื ืืืืืขืชืื ืชืจืืื ืฉื ืืืืจ ืืืจืื ืขื ืืืฉืื ื ืขืืื ืืืืืจืช ืืืืฆืขืืช Redis ืืืืืื ืื ืืชืื ืืืืจ ืขื ืืกืืืืืื ืฉื Redis ืื ืืฉื. ื ืืชืื ืฉื ืืืืืจืืชื Redlock ืืืืืืจ ืืืจืืื ืงืืคืื, ืืืืจ ืืกืคืจ "
ื ืขืืื ืืืืืจืช ืืื ืคืจืืืืืืื ืฉืืืืฉื ืืืื ืืืฉืืฉ ืืกืืืืืช ืจืืืช ืฉืืื ืชืืืืืื ืฉืื ืื ืืืืืื ืืขืืื ืขื ืืฉืืืื ืืฉืืชืคืื ืืืืคื ืืืขืื.
ืืฉื ื ืืกืคืจ ืกืคืจืืืช ืืคืืกืืื ืฉืืชืืจืื ืืืฆื ืืืืฉื DLM (Distributed Lock Manager) ืืืืฆืขืืช Redis, ืื ืื ืกืคืจืื ื ืืงืืช ืืืืฉื ืฉืื ื ืืืขืจืืืช ืฉืื ืืกืคืงืืช ืืืฉืืช ืืืื ืืืฉืืืื ืืื ืฉื ืืชื ืืืฉืื ืขื ืขืืฆืื ืืขื ืืืชืจ ืืชืืืื.
ืืืืืจ ืื ื ื ืกื ืืชืืจ ืืืืืจืืชื ืงื ืื ื ืืืชื ื ืืืืืื ืืืฆื ืืืืฉื ื ืขืืื ืืืืืจืช ืืืืฆืขืืช Redis. ื ืืืจ ืขื ืืืืืจืืชื ืฉื ืงืจื ืจืืืืง, ืืื ืืืืฉื ืื ืื ืื ืขืืืื ืืืืืจ, ืืืืขืชื ื, ืืืืืจืืชื ืื ืืืื ืืืชืจ ืืืืืฉื ืืจืืืื ืฉื ืืืคืข ืืืื. ืื ื ืืงืืืื ืฉืืงืืืื ืชื ืชื ืืืชื, ืชืกืคืง ืืฉืื ืืชืฉืชืืฉ ืื ืื ืงืืืช ืืชืืื ืืคืจืืืงืืื ืืืจืืืื ืื ืืืืจื ืืืืืื ืืืชืจ.
ืืืฉืื
ืืคื ื ืฉื ืขืืืจ ืืชืืืืจ ืืืืืืจืืชื, ืื ื ืืกืคืงืื ืืกืคืจ ืงืืฉืืจืื ืืืืืืฉืื ืืืื ืื. ืื ืืืืืื ืืฉืืฉ ืืขืืื.
Redlock-rb (ืืืฉืื ืขืืืจ ืจืืื). ืืฉ ืืืืืื Redlock-rb, ืฉืืืกืืฃ ืืืืื (ืคื ืื ื) ืื ืืืืช ืืืคืฆื, ืืื ืจืง ืืฉืืื ืื.Redlock-py (ืืืฉืื Python).ืืืืืจืืืืง (ืืืฉืื ืขืืืจ Asyncio Python).Redlock-php (ืืืฉืื ืขืืืจ PHP).PHPRedisMutex (ืืืฉืื ื ืืกืฃ ืขืืืจ PHP)cheprasov/php-redis-lock (ืกืคืจืืืช PHP ืืื ืขืืืื)ืกืื ืืจืื ืืืื (ืืืฉืื ืขืืืจ Go).ืจืืืกืื (ืืืฉืื ืขืืืจ Java).Redis::DistLock (ืืืฉืื ืขืืืจ Perl).Redlock-cpp (ืืืฉืื ืขืืืจ C++).Redlock-cs (ืืืฉืื ืขืืืจ C#/.NET).RedLock.net (ืืืฉืื ืขืืืจ C#/.NET). ืขื ืชืืืื ืืืจืืืืช ืืกืื ืืจืื ืื ืขืืื.ืกืงืจืื ืืืง (ืืืฉืื ืขืืืจ C# .NET ืขื ืืืืจ ื ืชืื ืื ื ืืชื ืืืืืจื)Redlock4Net (ืืืฉืื ืขืืืจ C# .NET)ืฆืืืช-ืืืื (ืืืฉืื ืขืืืจ NodeJS). ืืืื ืชืืืื ืืืืจืืช ืื ืขืืืื.
ืืืืื ืืืืื ืืช ืขืจืืืืืช
ืื ืื ื ืืืืืื ืืืืื ืืช ืืขืืฆืื ืฉืื ื ืขื ืฉืืืฉื ืืืคืืื ืื ืืืื ืฉืืืขืชื ื ืืกืคืงืื ืืช ืืขืจืืืืืช ืืืื ืืืืืืช ืื ืืจืฉืืช ืืฉืืืืฉ ืืขืื ืื ืขืืื ืืืืืจืช.
- ืจืืืฉ ืืืืืื ื: ืืืจื ืืืืืช. ืืื ืืื ื ืชืื, ืจืง ืืงืื ืืื ืืืื ืืืืืืง ืืช ืืื ืขืื.
- ืืืื ืืช ืืืคืืื ื': ืืื ืืืื ืกืชืื. ืชืืื ืืคืฉืจ ืืจืืืฉ ืืกืืคื ืฉื ืืืจ ื ืขืืื, ืื ืื ืืืงืื ืฉื ืขื ืืช ืืืฉืื ื ืืฉื ืื ื ืืืช ืขื ืืงืืข ืืืกืง ืืืจ.
- ืืืื ืืช ืืืคืืื ื': ืกืืืื ืืช ืชืงืืืช. ืื ืขืื ืจืื ืืฆืืชืื ืฉื Redis ืคืืขืืื, ืืงืืืืช ืืืืืื ืืจืืืฉ ืืืฉืืจืจ ืื ืขืืืื.
ืืืืข ืืืฉืื ืืืืืกืก ืขื ืฉืืืืจ ืืฉื ืืื ื ืืกืคืืง ืืืงืจื ืื
ืืื ืืืืื ืื ืื ืื ื ืืืืืื ืืฉืคืจ, ืืืื ื ื ืชื ืืช ืืฆื ืืขื ืืื ืื ืื ืืืื ืขื ืจืื ืกืคืจืืืช ืื ืขืืื ืืืืืืจืืช ืืืืืกืกืืช ืขื Redis.
ืืืจื ืืคืฉืืื ืืืืชืจ ืื ืขืื ืืฉืื ืืืืฆืขืืช Redis ืืื ืืืฆืืจ ืืคืชื ืืืืคืข. ืืืจื ืืื, ืืคืชื ื ืืฆืจ ืขื ืืืจื ืืืื ืืืืื, ืื ืืืฉื ืืืืฆืขืืช ืชืืื ืช expires ืืืกืืคืงืช ื-Redis, ืื ืฉืืืืงืื ืื ืืืืืืจ ืืคืชื ืื ืืฉืชืืจืจ (ื ืืก 2 ืืจืฉืืื ืฉืื ื). ืืืฉืจ ืืืงืื ืฆืจืื ืืฉืืจืจ ืืช ืืืฉืื, ืืื ืืืืง ืืช ืืืคืชื.
ืืืื ืจืืฉืื, ืืคืชืจืื ืืื ืขืืื ืื ืืื, ืืื ืืฉ ืืขืื: ืืืจืืืืงืืืจื ืฉืื ื ืืืฆืจืช ื ืงืืืช ืืฉื ืืืช. ืื ืงืืจื ืื ืืืคืข Redis ืืืืจื ื ืืฉื? ืื ืืื ื ืืกืืฃ ืขืื! ืื ืฉืชืืฉ ืื ืื ืืืฆืื ืืื ื ืืืื. ืืืจืื ืืฆืขืจ, ืืคืฉืจืืช ืื ืืื ื ืงืืืืช. ืขื ืืื ืื, ืื ื ืืื ืืืืฉื ืืจืืื ืืช ืืืคืืื ืืืืจืื ืืืืืืช ืฉืื ื ืฆืจืืืื ืืื ืืืืืื ืืืืื, ืืืืืื ืฉืืฉืืคืื ื-Redis ืืื ืืกืื ืืจืื ื.
ืืจืืจ ืฉืืืืื ืืื ืืชืจืืฉ ืืฆื ืืืข:
- ืืงืื ื' ืจืืืฉ ืื ืขืื ืขื ืืืืกืืจ.
- ืืืืกืืจ ื ืืฉื ืืคื ื ืฉืืื ืช ืืืคืชื ืืืขืืจืช ืืขืื.
- ืืืกืื ืืงืืื ืืื ืืื.
- ืืงืื B ืจืืืฉ ื ืขืืื ืขื ืืืชื ืืฉืื ืฉ-A ืืืจ ื ืขื. ืืคืจืช ืืืืื!
ืืคืขืืื ืื ื ืืจืืื ืืืืืืื ืฉืื ืกืืืืช ืืืืืืืช, ืืื ืชืงืื, ืืงืืืืช ืจืืื ืืืืืื ืืืืืืง ืืช ืืื ืขืื ืื ืืื ืืช. ืืืงืจืื ืืืื, ื ืืชื ืืืืฉื ืคืชืจืื ืืืืกืก ืฉืืคืื. ืืืจืช, ืื ื ืืืืืฆืื ืขื ืืคืชืจืื ืืืชืืืจ ืืืืืจ ืื.
ืืืฉืื ื ืืื ืขื ืืืคืข ืืืื
ืืคื ื ืฉื ื ืกื ืืืชืืืจ ืขื ืืืกืจืื ืืช ืฉื ืชืฆืืจืช ืืืืคืข ืืืืื ืืืชืืืจ ืืขืื, ืืื ื ืืื ืืืฆื ืืืคื ื ืืื ืืืงืจื ืืคืฉืื ืืื, ืฉืื ืคืชืจืื ืื ืชืงืฃ ืืืขืฉื ืืืืฉืืืื ืฉืืื ืชื ืื ืืจืืฅ ืืงืืื ืืขืช ืืขืช, ืืื ืืืื ืืกืืื ื- ืืืคืข ืืืื ืืฉืืฉ ืืืกืืก ืืืฉืืฉ ืืืืืืจืืชื ืืืืืืจ ืืืชืืืจ ืืื.
ืืื ืืจืืืฉ ืื ืขืื, ืขืฉื ืืืช:
SET resource_name my_random_value NX PX 30000
ืคืงืืื ืื ืืชืงืื ื ืืคืชื ืจืง ืื ืืื ืื ืงืืื ืืืจ (ืืืคืฆืืืช NX), ืขื ืชืงืืคืช ืชืืงืฃ ืฉื 30000 ืืืคืืืช ืืฉื ืืื (ืืคืฉืจืืช PX). ืืืคืชื ืืืืืจ ื"myrandomvalue
" ืขืจื ืื ืืืื ืืืืืช ืืืืืื ืืื ืืืงืืืืช ืืืื ืืงืฉืืช ืื ืขืืื.
ืืขืืงืจืื, ืขืจื ืืงืจืื ืืฉืืฉ ืืฉืืจืืจ ืืืื ืฉื ืืื ืขืื, ืืืฉืจ ืกืงืจืืคื ืืืืจ ื-Redis: ืืกืจ ืืช ืืืคืชื ืจืง ืื ืืื ืงืืื ืืืขืจื ืืืืืืกื ืื ืืื ืืืืืง ืื ืฉืืื ืฆืคืื. ืื ืืืฉื ืืืืฆืขืืช ืกืงืจืืคื Lua ืืื:
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
end
ืื ืืฉืื ืืื ืืื ืืข ืืกืจืช ืื ืขืื ืืืืืืง ืขื ืืื ืืงืื ืืืจ. ืืืืืื, ืืงืื ืขืฉืื ืืจืืืฉ ืื ืขืื, ืืื ืืืื ืขื ืืคืขืืื ืืืฉืื ืฉื ืืฉืืช ืืื ืจื ืืืชืจ ืืืื ืขืื ืืจืืฉืื (ืืื ืฉืืืคืชื ืืฉ ืืื ืืคืื), ืืืืืฉื ืืืกืืจ ืืช ืืื ืขืื ืฉืืงืื ืืืจ ืืฆืื.
ืฉืืืืฉ ื-DEL ืคืฉืื ืืื ื ืืืื ืืืืืื ืฉืืงืื ืืืื ืืืกืืจ ืื ืขืื ืืืืืืง ืขื ืืื ืืงืื ืืืจ. ืืขืืืช ืืืช, ืืขืช ืฉืืืืฉ ืืกืงืจืืคื ืื "ื, ืื ืื ืขืื "ืืชืื" ืืืืจืืืช ืืงืจืืืช, ืื ืฉืจืง ืืืงืื ืฉืืฆืื ืืืชื ืืขืืจ ืืืื ืืืกืืจ ืืืชื.
ืื ืฆืจืืื ืืืืืช ืืืืจืืืช ืืืงืจืืืช ืืื? ืื ื ืื ืืฉ ืฉืื ืฆืจืื ืืืืืช 20 ืืชืื ื-/dev/urandom, ืืื ืืชื ืืืื ืืืฆืื ืืจืืื ืคืืืช ืืงืจืืช ืืืคืื ืืช ืืืืจืืืช ืืืืืืืืช ืืกืคืืง ืืืืจืืช ืฉืื. ืืืืืื, ืื ืืืื ืืกืืจ ืืืืืืข ืืช RC4 ืขื /dev/urandom ืืืืืจ ืืื ืืืฆืืจ ืืจื ืคืกืืืื ืืงืจืื ืืื ื. ืคืชืจืื ืคืฉืื ืืืชืจ ืืืื ืฉืืืื ืฉื ืืื ืืื ืืงืก ืืจืืืืืฆืืืช ืืืงืจื-ืฉื ืืืช ืืชืืกืคืช ืืืื ืืืงืื; ืื ืื ืื ืื ืืืืืื, ืืื ืื ืื ืจืื ืขืืื ืืืฉืืื ืืจืื ืืืงืฉืจืื.
ืืืื ืื ืื ื ืืฉืชืืฉืื ืืืื ืืืฉื ืืื ืืืคืชื ื ืงืจื "ืืื ืืื ืขืื". ืขืจื ืื ืืื ืื ืืฉื ืืืื ืืคื ื ืฉืืจืืจ ืื ืขืืื ืืืืืืืืช ืืื ืืฉื ืืืื ืฉืืฉ ืืืงืื ืืืฉืืื ืคืขืืื ืืคื ื ืฉืืงืื ืืืจ ืืืื ืืชืืจื ืื ืขืื ืืช ืืืฉืื ืืื, ืืืื ืืืคืจ ืืคืืขื ืขืจืืืืืช ืื-ืืืืื ืืืืืช. ืืืจืืืช ืื ืืืืืืช ืจืง ืืืืื ืืื ืืกืืื, ืฉืืชืืื ืืจืืข ืจืืืฉืช ืืื ืขืื.
ืื ืืืืจื ื ืขื ืืจื ืืืื ืืจืืืฉ ืืืฉืืจืจ ืื ืขืื. ืืืขืจืืช (ืื ืื ืื ื ืืืืจืื ืขื ืืขืจืืช ืื ืืืืืจืช ืืืืจืืืช ืืืืคืข ืืืื ืืืืื ืชืืื) ืืืืืืืช. ืืืื ื ืจืืื ืืช ืืจืขืืื ืืื ืืืขืจืืช ืืืืืจืช, ืฉืื ืืื ืื ื ืขืจืืืืืช ืืืื.
ืืืืืจืืชื Redlock
ืืืจืกื ืืืืืืจืช ืฉื ืืืืืืจืืชื ืื ืืื ืฉืืฉ ืื ื ืืืกืืจืื ืฉื N Redis. ืฆืืชืื ืืื ืืื ื ืชืืืืื ืืืืืืื ืื ืืื, ืืืื ืืื ื ื ืืฉืชืืฉืื ืืฉืืคืื ืื ืืื ืืขืจืืช ืชืืืื ืืจืืืืช ืืืจืช. ืืืจ ืืืกืื ื ืืืฆื ืืจืืืฉ ืืืฉืืจืจ ืื ืขืื ืืฆืืจื ืืืืืืืช ืืืืคืข ืืืื. ืื ืื ื ืืืงืืื ืืืืื ืืืืื ืฉืืืืืืจืืชื, ืืฉืขืืืืื ืขื ืืืคืข ืืืื, ืืฉืชืืฉ ืืืืืง ืืฉืืื ืืื. ืืืืืืืืช ืฉืื ื ืืืืจื ื ืืช N ื-5, ืฉืื ืขืจื ืกืืืจ. ืืคืืื, ื ืฆืืจื ืืืฉืชืืฉ ื-5 ืืืกืืจืื ืฉื Redis ืืืืฉืืื ืฉืื ืื ืื ืืืืื ืืช ืืืจืืืืืืืช ืืื ืืืืืื ืฉืื ืคืืขืืื ืืืืื ืจืื ืืื ืชืืืช ืื ืืื.
ืืื ืืจืืืฉ ืื ืขืื, ืืืงืื ืืืฆืข ืืช ืืคืขืืืืช ืืืืืช:
- ืืงืื ืืช ืืืื ืื ืืืื ืืืืคืืืช ืฉื ืืืช.
- ืื ืกื ืืจืฆืฃ ืืืฉืื ื ืขืืื ืืื N ืืืงืจืื, ืชืื ืฉืืืืฉ ืืืืชื ืฉื ืืคืชื ืืืขืจืืื ืืงืจืืืื ืืื ืืืงืจืื. ืืฉืื 2, ืืืฉืจ ืืืงืื ืืืืืจ ื ืขืืื ืขื ืืกืืก ืืืคืข, ืืืงืื ืืฉืชืืฉ ืืืฉืืื ืืื ืืจืืืฉ ืืืชื ืงืฆืจ ืืกืคืืง ืืืฉืืืื ืืืื ืฉืืืจืื ืื ืขืืื ืืฉืืืจืจืช ืืืืืืืืช. ืืืืืื, ืื ืืฉื ืืืกืืื ืืื 10 ืฉื ืืืช, ืืืฉืืื ืขืฉืืื ืืืืืช ืืืืื ืฉื ~5-50 ืืืืืฉื ืืืช. ืื ืืืื ืืช ืืืฆื ืฉืื ืืืงืื ืืืื ืืืืฉืืจ ืืกืื ืืืฉื ืืื ืจื ืื ืืกืืื ืืืืืข ืืฆืืืช Redis ืืืฉื: ืื ืืืืคืข ืืื ื ืืืื, ืื ืื ื ืื ืกืื ืืืชืืืจ ืืืืคืข ืืืจ ืืืงืื ืืืคืฉืจื.
- ืืื ืืงืืช ื ืขืืื, ืืืงืื ืืืฉื ืืื ืืื ืืืฃ; ืืฉื ืื, ืืื ืืืจืื ืืขืจื ืืืื ืืคืืขื ืืช ืืืชืืช ืืืื ืฉืืชืงืืื ืืฉืื 1. ืื ืืจืง ืื ืืืงืื ืืฆืืื ืืืฉืื ืืช ืื ืขืืื ืืจืื ืืืงืจืื (ืืคืืืช 3), ืืืช ืืืื ืืืืื ืฉืืงื ืขื ืืืฉืื ืืช ืืื ืขืื, ืคืืืช ืืืฉื ืื ืขืืื, ืืื ืขืื ื ืืฉื ืืืืื ืืืฉื.
- ืื ื ืจืืฉ ื ืขืืื, ืืฉื ืื ืขืืื ื ืืฉื ืืืฉื ืื ืขืืื ืืืงืืจื ืื ืืืื ืืืื ืฉืืืฃ ืฉืืืฉื ืืฉืื 3.
- ืื ืืืงืื ืื ืืฆืืื ืืืฉืื ืืช ืื ืขืืื ืืกืืื ืืืฉืื (ืื ืฉืืื ืื ืืฆืืื ืื ืขืื ืืืคืขื N/2+1, ืื ืฉืืฉื ืื ืขืืื ืืื ืฉืืืื), ืื ืืื ืื ืกื ืืืื ืืช ืื ืขืืื ืฉื ืื ืืืืคืขืื (ืื ืืื ืฉืืื ืืฉื ืฉืืื ืื ืืืื ืืืกืื ).
ืืื ืืืืืืจืืชื ืืกืื ืืจืื ื?
ืืืืืจืืชื ืื ืืืืกืก ืขื ืืื ืื ืฉืืืจืืช ืฉืืื ืฉืขืื ืืกืื ืืจื ืฉืขืืื ืื ืืชืืืืืื ืืคืขืื, ืืืื ืืืงืืื ืืื ืชืืืื ืขืืืื ืืืจื ืืขืจื ืืืืชื ืงืฆื, ืืืฉืืืื ืงืื ื ืืืฉืืืื ืืืื ืืืืื ืฉืืืจืื ืื ืขืืื ืืฉืืืจืจ ืืืืืืืืช. ืื ืื ืื ืืืื ืืืื ืืืฆื ืืืืคืืื ื ืืืืฉืืื ืจืืืืื: ืืื ืืืฉื ืืฉ ืฉืขืื ืืงืืื, ืืืจืื ื ืืชื ืืกืืื ืขื ืื ืฉืืคืจืฉ ืืฉืขืืช ืืื ืืืฉืืื ืฉืื ืื ืงืื.
ืืฉืื ืื, ืขืืื ื ืื ืกื ืืืืืจืืช ืจืื ืืืชืจ ืืช ืืื ืืืจืืงื ืืืืืืช ืฉืื ื: ืืืจืื ืืืืืช ืืืืืืช ืจืง ืื ืืืงืื ืืืืืืง ืืื ืขืื ืืืฆื ืืืืื ืืืื ืื ืืื ืขืื ืชืงืฃ (ืขืจื ืื ืืชืงืื ืืฉืื 3), ืคืืืช ืืื ื ืืกืฃ (ืกื"ื ืืื ืืืคืืืช ืืฉื ืืื ืืื ืืคืฆืืช ืขื ืืคืจืฉ ืืืื ืืื ืชืืืืืื).
ืืืืืจ ืืืขื ืืื ืืื ืืกืคืจ ืืืชืจ ืขื ืืขืจืืืช ืืืื ืืืืจืฉืืช ืชืืืื ืฉื ืืจืืืื ืืื:
ื ืกื ืฉืื ืขื ืืืฉืืื
ืืืฉืจ ืืงืื ืื ืืฆืืื ืืืฉืื ืื ืขืื, ืขืืื ืื ืกืืช ืฉืื ืืืืจ ืขืืืื ืืงืจืื; ืื ื ืขืฉื ืืื ืืืื ืกื ืืจืื ืฉื ืืงืืืืช ืืจืืืื ืืื ืกืื ืืจืืืฉ ื ืขืืื ืขื ืืืชื ืืฉืื ืื-ืืื ืืช (ืื ืฉืขืืื ืืืืืื ืืืฆื ืฉื "ืืื ืืคืืฆื" ืฉืื ืืื ืื ืฆืืื). ืื ืืกืฃ, ืืื ืฉืืงืื ืื ืกื ืืืฉืื ื ืขืืื ืืืจ ืืืชืจ ืืจืื ืืืคืขื Redis, ืื ืืืืื ืื ืืืื ืืืชืจืืฉ ืืฆื ืฉื ืืื ืืคืืฆื ืืฆืืืฆื ืืืชืจ (ืืืฆืืจื ืื ืืกืืื ืืช ืืืืจืื ืงืื ืืืชืจ). ืืื, ืืืืคื ืืืืืืื, ืืืงืื ืฆืจืื ืื ืกืืช ืืฉืืื ืคืงืืืืช 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, ืื ืฉืืืคื ืืช ืื ืขืืื ืืคืกืืื.
ืืื ืืชื ืืืื ืืกืคืง ืืืืื ืจืฉืืืช ืืืืืื, ืืฆืืื ืืืืืจืืชืืื ืืืืื ืงืืืืื ืื ืืืฆืื ืืื ืืืืืจ ืืขืื?
ืฉืืงืืื ื ืืืฉืืช
ืืืื ืืช ืืืขืจืืช ืชืืืื ืืฉืืืฉื ืืืคืืื ืื ืขืืงืจืืื:
- ืฉืืจืืจ ืื ืขืืืื ืืืืืืืืช (ืืืฉืจ ืชืืงืฃ ืืืคืชืืืช ืคื): ืืืคืชืืืช ืืืื ืืืื ืื ืืกืืคื ืฉื ืืืจ ืืฉืืืืฉ ืืื ืขืืืื.
- ืืขืืืื ืฉืืงืืืืช ืืืจื ืืื ืขืืืจืื ืื ืืื ืขื ืืื ืืกืจืช ืื ืขืืืื ืืืฉืจ ืืื ืขืื ืืจืฆืื ืื ื ืจืืฉ, ืื ื ืจืืฉ ืืืขืืืื ืืืฉืืื; ืื ืกืืืจ ืืื ืื ืฉืื ื ืฆืืจื ืืืืืช ืืชืืงืฃ ืืืคืชืืืช ืืื ืืจืืืฉ ืืืืฉ ืืช ืืื ืขืื.
- ืืขืืืื ืฉืืืฉืจ ืืงืื ืฆืจืื ืื ืกืืช ืฉืื ืืจืืืฉ ืื ืขืื, ืืื ืืืชืื ืืื ืืจืื ืืืกืืช ืืืชืงืืคื ืื ืืจืฉืช ืืจืืืฉืช ืจืื ืืื ืขืืืื. ืื ืืงืืื ืืช ืืกืืืจืืช ืืืืืืฆืจ ืืฆื ืฉื ืืื ืืคืืฆื ืืขืช ืชืืจืืช ืขื ืืฉืืืื.
ืขื ืืืช, ืืฉ ืขืื ืฉ ืืืื ืืช ืืฉืืื ื-TTL ืฉื ืืงืืขื ืืจืฉืช, ืื ืฉืื ืืฉ ืืงืืขืื ืจืฆืืคืื, ืืขืื ืฉ ืขืฉืื ืืืืืช ืืืชื ืืืืื. ืื ืงืืจื ืืื ืคืขื ืฉืืงืื ืจืืืฉ ืื ืขืื ืืื ืงืืจืข ืืงืืข ืืืจ ืืคื ื ืฉืืื ืืืื ืืฉืืจืจ ืืืชื.
ืืืืคื ืขืงืจืื ื, ืืืื ืชื ืืงืืขื ืจืฉืช ืจืฆืืคืื ืืื ืกืืคืืื, ืืขืจืืช ืืืืื ืืืืฉืืจ ืื ืืืื ื ืืคืจืง ืืื ืืื ืกืืคื.
ืืืฆืืขืื, failover ื-fsync
ืื ืฉืื ืจืืื ืืฉืชืืฉืื ื-Redis ืืืืืื ืฉืื ืืงืืงืื ืืืืฆืืขืื ืืืืืื ืฉื ืฉืจืช ื ืขืืื ืืืืื ืช ืืืฉืืื ืื ืืจืฉืช ืืจืืืฉื ืืฉืืจืืจ ืฉื ืื ืขืืืื, ืืืกืคืจ ืืจืืืฉืืช/ืฉืืจืืจืื ืฉื ืืชื ืืืฉืืื ืืฉื ืืื. ืืื ืืขืืื ืืืจืืฉื ืื, ืงืืืืช ืืกืืจืืืื ืืชืงืฉืืจืช ืขื ืฉืจืชื N Redis ืืื ืืืคืืืช ืืช ืืื ืืืืืืจ. ืืืื ืืกืืจืืืืืช ืจืืืื (ืื "ืจืืืื ืฉื ืขื ื", ืืืฉืจ ืืฉืงืข ืืืขืืจ ืืืฆื ืื ืืืกื, ืฉืืื ืืช ืื ืืคืงืืืืช ืืงืืจื ืืช ืืคืงืืืืช ืืืืืจ ืืืชืจ, ืืื ืื ืฉืืื ืืืืืื ืืืื ืืฉืื ืืื ืืืงืื ืืื ืืืคืข ืืืื) .
ืขื ืืืช, ืขืืื ื ืืงืืช ืืืฉืืื ืื ืืช ืืฉืืงืื ืืงืฉืืจ ืืืืกืื ื ืชืื ืื ืืืืื ืืจืื ืื ืื ื ืฉืืืคืื ืืืฆืืจ ืืืื ืขื ืืชืืืฉืฉืืช ืืืื ื ืืชืงืืืช.
ืืขืืงืจืื, ืืื ืืืืืืจ ืืช ืืืขืื, ื ื ืื ืฉืื ื ืืืืืจืื ืืช Redis ืืื ืืืกืื ื ืชืื ืื ืืืืื ืืจืื ืืื. ืืืงืื ืืฆืืื ืืืกืื 3 ืืชืื 5 ืืงืจืื. ืืื ืืืืคืขืื ืฉืืืงืื ืืฆืืื ืืืกืื ืืืคืขื ืืืืฉ, ืืืจืืข ืื ืืฉ ืฉืื 3 ืืืคืขืื ืขืืืจ ืืืชื ืืฉืื, ืืืชื ืื ื ืืืืืื ืืืกืื, ืืืงืื ืืืจ ืืืื, ืืชืืจื, ืืืกืื ืืช ืืืืคืข ืฉืืืคืขื ืืืืฉ, ืชืื ืืคืจื ืฉื ืชืืื ืช ืืืืืื. ืื ืื ืืืขืืืืช ืฉื ืื ืขืืืื.
ืื ืชืคืขืื ื ืชืื ืื ืงืืืื (AOF), ืืืฆื ืืฉืชืคืจ ืืขื. ืืืืืื, ืืชื ืืืื ืืงืื ืฉืจืช ืขื ืืื ืฉืืืืช ืืคืงืืื SHUTDOWN ืืืคืขืื ืืืืฉ ืฉืื. ืืืืืื ืฉืคืขืืืืช ืชืคืืื ื- Redis ืืืืฉืืืช ืืืืคื ืกืื ืื ืืฆืืจื ืืื ืฉืืืื ืืืฉืื ืืืจืื ืื ืืฉืืฉืจืช ืืืื, ืื ืืืจืืฉืืช ืฉืื ื ืืกืืจ. ืื ื ืืจืืื ืื ืขืื ืืืืืืช ืืืืื ืงืืืข. ืื ืืขืฉืืช ืืืงืจื ืฉื ืืคืกืงืืช ืืฉืื? ืื Redis ืืืืืจ ืืืจืืจืช ืืืื, ืขื ืกื ืืจืื fsync ืืืืกืง ืื ืฉื ืืื, ืื ืืชืื ืฉืืืจื ืืคืขืื ืืืืฉ ืื ืืืื ืื ื ืืช ืืืคืชื ืฉืื ื. ืชืืืืจืืืช, ืื ืืจืฆืื ื ื ืืืืืื ืืืืืช ื ืขืืื ืืืืื ืืคืขืื ืืืืฉ ืฉื ืืืคืข ืืืฉืื, โโืขืืื ื ืืืคืขืื fsync=always
ืืืืืจืืช ืืืืกืื ื ืชืื ืื ืืืืื ืืจืื. ืื ืืืจืื ืืืืืืื ืืช ืืืืฆืืขืื, ืขื ืืจืื ืฉื ืืขืจืืืช CP ืืืฉืืฉืืช ืืืืคื ืืกืืจืชื ืืืืฉืื ืืืืืื ืฉื ืื ืขืืืื ืืืืืจืื.
ืืื ืืืฆื ืืื ืืืชืจ ืืื ืฉืืื ื ืจืื ืืืื ืจืืฉืื. ืืืืคื ืขืงืจืื ื, ืืืืืช ืืืืืืจืืชื ื ืฉืืจืช ืืืืืื ืฉืืืฉืจ ืืืืคืข ืืืคืขื ืืืืฉ ืืืืจ ืืฉื, ืืื ืืื ื ืืฉืชืชืฃ ืืืชืจ ืืฉืื ืื ืขืื ืฉืคืขืื ืืขืช.
ืืื ืืืืืื ืืืช, ืื ืื ื ืจืง ืฆืจืืืื ืืืืืื ืฉืืืืจ ืืฉื ืืืืคืข ืืืฉืืจ ืื ืืืื ืืคืจืง ืืื ืืขืืื ืืืขื ืขื ื-TTL ืืืงืกืืืื ืฉืื ื ืืฉืชืืฉืื ืื. ืื ื ืืชืื ืืชืืจืื ืืชืคืืื ืืืฉืืจืืจ ืืืืืืื ืฉื ืื ืืืคืชืืืช ืฉืืื ืคืขืืืื ืืืื ืืืฉื.
ืืืืฆืขืืช ืืคืขืื ืืืืฉ ืืืฉืืืช, ื ืืชื ืืืืคื ืขืงืจืื ื ืืืฉืื ืืืืื ืื ืืืืขืืจ ืืชืืื ืืจืืืช ืืืื ืืจืืืก. ืขื ืืืช, ืฉืืื ืื ืฉืืืืจ ืขืืื ืืืจืืจ ืงื ืก ืืืื ืืคืจืช ื ืืืฉืืช. ืืืืืื, ืื ืจืื ืืืืคืขืื ื ืืฉืืื, ืืืขืจืืช ืชืืคืื ืื ืืืื ื ืืืืืืืช ืขืืืจ ื-TTL (ืืื ื ืืชื ืืืกืื ืืฉืื ืืืืื ืชืงืืคื ืื).
ืื ื ืืืืืืื ืืช ืืืื ืืช ืืืืืืจืืชื: ืื ื ืืจืืืืื ืืช ืืืกืืื
ืื ืืขืืืื ืืืืืฆืขืช ืขื ืืื ืืงืืืืช ืืืจืืืช ืืฉืืืื ืงืื ืื, ื ืืชื ืืืคืืืช ืืช ืืฉื ืื ืขืืื ืืืืืืจ ืืืจืืจืช ืืืื ืืืืืฉื ืื ืื ืื ืืืืจืืช ืื ืขืืืื. ืืืืคื ืขืงืจืื ื, ืื ืืืงืื ืขืกืืง ืืืืฉืื ืืขืจื ืชืคืืืช ืื ืขืืื ื ืืื ืืืืคื ืืกืืื, ื ืืชื ืืฉืืื ืกืงืจืืคื Lua ืืื ืืืืคืขืื ืฉืืจืืื ืืช ื-TTL ืฉื ืืืคืชื ืื ืืืคืชื ืขืืืื ืงืืื ืืืขืจื ืฉืื ืขืืืื ืขืจื ืืงืจืื ืืืชืงืื ืืืฉืจ ืื ืขืื ื ืจืืฉ.
ืืงืื ืฆืจืื ืืฉืงืื ืจืืืฉื ืืืืฉ ืฉื ืื ืขืื ืจืง ืื ืืื ืืฆืืื ืื ืขืื ืืช ืจืื ืืืงืจืื ืืชืื ืชืงืืคืช ืืชืืงืฃ.
ื ืืื, ืืื ืืช ืืืืืืจืืชื ืื ืืฉืชื ื, ืืืื ืืฉ ืืืืืื ืืช ืืืกืคืจ ืืืจืื ืฉื ื ืืกืืื ืืช ืืืืจืื ืื ืฉื ืื ืืจืืืฉ ืื ืขืืืื, ืืืจืช ืืืคืืื ื ืื ืืืฉืืช ืืืคืจื.
ืืงืืจ: www.habr.com