Π₯Π΅ΠΉ Π₯Π°Π±Ρ!
ΠΠ½Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° ΡΠ»ΠΎΠΆΠ½Π° ΡΡΠ°ΡΠΈΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Redis ΠΈ Π²ΠΈ ΠΊΠ°Π½ΠΈΠΌ Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π·Π° ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π½Π° Redis ΠΊΠ°ΡΠΎ ΡΠ΅ΠΌΠ°. ΠΠ½Π°Π»ΠΈΠ· Π½Π° Π²ΡΠΏΡΠΎΡΠ½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Redlock ΠΎΡ ΠΠ°ΡΡΠΈΠ½ ΠΠ»Π΅ΠΏΠΌΠ°Π½, Π°Π²ΡΠΎΡ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° "
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈΠΌΠΈΡΠΈΠ², ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π²ΡΡΡ Ρ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ΅ Π½Π°ΡΠΈΠ½.
ΠΠΌΠ° ΡΠ΅Π΄ΠΈΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΠΈΡΠ²Π°Ρ ΠΊΠ°ΠΊ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ DLM (Distributed Lock Manager) Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Redis, Π½ΠΎ Π²ΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ, ΡΠ° Π΄ΠΎΡΡΠ° ΡΠ»Π°Π±ΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΠΎΡΡΠΈΠΆΠΈΠΌΠΎ Ρ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½.
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²Π΅Π½ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Redis. Π©Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, Π½Π°ΡΠ΅ΡΠ΅Π½ redlock, ΡΠΎΠΉ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π΄ΠΈΡΠΏΠ΅ΡΠ΅Ρ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΠΏΠΎΡΠ΅Π΄ Π½Π°Ρ ΡΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π΅ ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΠΎΡ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ Π΅Π΄Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΡΠ΅ Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°, ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΈ ΡΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΠΎΡΠΏΡΠ°Π²Π½Π° ΡΠΎΡΠΊΠ° Π·Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈΠ»ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π’Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠΏΡΠ°Π²ΠΊΠ°.
Redlock-rb (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Ruby). ΠΠΌΠ° ΠΈΠ²ΠΈΠ»ΠΈΡΠ° Redlock-rb, ΠΊΠΎΠΉΡΠΎ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠ°ΠΊΠ΅Ρ (gem) Π·Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, Π° ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΎΠ²Π°.Redlock-py (Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Python).Aioredlock (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Asyncio Python).Redlock-php (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° PHP).PHPRedisMutex (Π΄ΡΡΠ³Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π° PHP)cheprasov/php-redis-lock (PHP Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° Π±ΡΠ°Π²ΠΈ)Redsync (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Go).Π Π΅Π΄ΠΈΡΡΠ½ (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Java).Redis::DistLock (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Perl).Redlock-cpp (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° C++).Redlock-cs (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° C#/.NET).RedLock.net (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° C#/.NET). Π‘ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°ΡΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ.ScarletLock (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° C# .NET Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ)Redlock4Net (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° C# .NET)Π²ΡΠ·Π΅Π»-redlock (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° NodeJS). ΠΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π±ΡΠ°Π²ΠΈ.
ΠΠ°ΡΠ°Π½ΡΠΈΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ
Π©Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½ ΡΠ°ΠΌΠΎ Ρ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠΈΡΠΎ ΡΠΏΠΎΡΠ΅Π΄ Π½Π°Ρ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅.
- ΠΠ°ΡΠΈΡΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: ΠΠ·Π°ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΡΠ² Π²ΡΠ΅ΠΊΠΈ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΡΡΠΆΠΈ ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ°.
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ A: ΠΡΠΌΠ° Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈΡ. ΠΠΈΠ½Π°Π³ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π°ΠΊΠ»ΡΡΠΈΠ» ΡΠ΅ΡΡΡΡΠ°, ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ ΠΈΠ»ΠΈ ΡΠ΅ ΠΏΡΠΈΠ·Π΅ΠΌΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π΄ΠΈΡΠΊΠΎΠ² ΡΠ΅Π³ΠΌΠ΅Π½Ρ.
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ B: Π’ΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΎΡΡ ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΎΠΊΠ°ΡΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅ Π½Π° Redis ΡΠ°Π±ΠΎΡΡΡ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Ρ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Ρ ΠΊΠ»ΡΡΠ°Π»ΠΊΠΈ.
ΠΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π°, Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ, Π½Π΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°ΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Redis.
ΠΠ°ΠΉ-Π»Π΅ΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Redis Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠ»ΡΡ Π² Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΊΠ»ΡΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΆΠΈΠ²ΠΎΡ, ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π² Redis, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΡΡΠ½ΠΎ ΡΠΎΠ·ΠΈ ΠΊΠ»ΡΡ ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π° (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ 2 Π² Π½Π°ΡΠΈΡ ΡΠΏΠΈΡΡΠΊ). ΠΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ ΡΠ΅ΡΡΡΡΠ°, ΡΠΎΠΉ ΠΈΠ·ΡΡΠΈΠ²Π° ΠΊΠ»ΡΡΠ°.
ΠΠ° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΡΡΠ° Π΄ΠΎΠ±ΡΠ΅, Π½ΠΎ ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ: Π½Π°ΡΠ°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ·Π΄Π°Π²Π° Π΅Π΄Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, Π°ΠΊΠΎ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡΡ Π½Π° Ρ ΠΎΡΡ Redis ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ? Π’ΠΎΠ³Π°Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΠ±! Π Π½ΠΈΠ΅ ΡΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π°ΠΊΠΎ Π²ΠΎΠ΄Π΅ΡΠΈΡΡ Π΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΈ ΠΎΠΏΡΠΈΡ Π½Π΅ Π΅ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½Π°. ΠΡΠ°Π²Π΅ΠΉΠΊΠΈ ΡΠΎΠ²Π°, Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² Redis Π΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π² ΡΠ°ΠΊΡΠ² ΠΌΠΎΠ΄Π΅Π» Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅:
- ΠΠ»ΠΈΠ΅Π½Ρ A ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ.
- ΠΠ»Π°Π²Π½ΠΈΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ, ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ΠΎ ΠΊΡΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡ.
- ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡ ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ.
- ΠΠ»ΠΈΠ΅Π½Ρ B ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΠΈΡ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΠΉΡΠΎ A Π²Π΅ΡΠ΅ Π΅ Π·Π°ΠΊΠ»ΡΡΠΈΠ». ΠΠΠ Π£Π¨ΠΠΠΠ ΠΠ Π‘ΠΠΠ£Π ΠΠΠ‘Π’Π’Π!
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΡΠ΅ ΠΏΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΠ²Π°, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²ΡΠ΅Π΄Π°, ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π·Π°Π΄ΡΡΠΆΠ°Ρ ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΠΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ Π΅Π΄ΠΈΠ½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΡΠ½ΠΎΡΡ Π΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΡΠΎ Π·Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅, Π° ΡΡΡΠΎ ΠΈ Π·Π°ΡΠΎΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΊ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ.
ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅, Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
SET resource_name my_random_value NX PX 30000
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΊΠ»ΡΡ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π²Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° (NX ΠΎΠΏΡΠΈΡ), Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ ΠΎΡ 30000 XNUMX ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ (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 ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°Π΅Π½ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π½Π΅Π³ΠΎ. ΠΠ΄Π½ΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ unix Π²ΡΠ΅ΠΌΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΎΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠ»ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°; Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠΈΠ³ΡΡΠ΅Π½, Π½ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ ΡΡΡ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ.
ΠΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΠΌΡΡΠΊΠ° Π·Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΠΊΠ»ΡΡΠ°, ΡΠ΅ Π½Π°ΡΠΈΡΠ° "ΠΆΠΈΠ²ΠΎΡ Π½Π° ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ°". Π’Π°Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π΅ ΠΊΠ°ΠΊΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π΄Π° Π±ΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΎ, ΡΠ°ΠΊΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π° ΠΌΠΎΠΆΠ΅ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ΅Π΄ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈ ΡΠΎΠ·ΠΈ ΡΠ΅ΡΡΡΡ, Π±Π΅Π· Π²ΡΡΡΠ½ΠΎΡΡ Π΄Π° Π½Π°ΡΡΡΠ°Π²Π° Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅. Π’Π°Π·ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π° ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π·Π°ΠΊΡΠΏΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ°.
Π’Π°ΠΊΠ° ΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΡ ΠΌΠ΅ Π΄ΠΎΠ±ΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° (Π°ΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π½Π΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΡΡΠΎΡΡΠ° ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ) Π΅ Π·Π°ΡΠΈΡΠ΅Π½Π°. ΠΠ΅ΠΊΠ° ΡΠ°Π·ΡΠΈΡΠΈΠΌ ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΊΡΠΌ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΡΠ΄Π΅ΡΠΎ Π½ΡΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΊΠΈΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΡΠΌ Π½Π° Redlock
Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ N Redis masters. Π’Π΅Π·ΠΈ Π²ΡΠ·Π»ΠΈ ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄ΡΡΠ³, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ. ΠΠ΅ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠΈΠ³ΡΡΠ½ΠΎ Π΄Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ΅ΠΌ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠΌ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. ΠΡΠΈΠ΅ΠΌΠ°ΠΌΠ΅ Π·Π° Π΄Π°Π΄Π΅Π½ΠΎΡΡ, ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Ρ Π΅Π΄ΠΈΠ½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΡΠ½ΠΎ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄. Π Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ 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 Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π°ΠΊΠΎ ΠΈΠΌΠ° ΡΡΡΠ΅Π΄Π½ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈ, Π½Π°ΠΊΠ°Π·Π°Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π²ΠΈΠ½Π°Π³ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠΊΡΡΠ½Π΅ ΠΊΡΠΌ Π΄ΡΡΠ³ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ.
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΈ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΡΠ°Π½Π΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π·Π° Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΠΎΡΠΊΠ°Π· ΠΈ fsync
ΠΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Redis, Π·Π°ΡΠΎΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡ ΠΎΡ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΡΡΡΠ²ΡΡΠ° Π·Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΈ Π±ΡΠΎΡ Π½Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½ΠΈΡΡΠ°/ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΡΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅, ΠΈΠΌΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ N Redis ΡΡΡΠ²ΡΡΠΈ Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ (ΠΈΠ»ΠΈ βΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅Π΄Π½ΠΈΡ ΡΠΎΠ²Π΅ΠΊβ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠΎΠΊΠ΅ΡΡΡ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌ, ΠΈΠ·ΠΏΡΠ°ΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΎ ΠΏΡΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ΅ΠΊΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ) .
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½ΠΈΠ΅ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΡΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π» Ρ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ.
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π·Π° Π΄Π° ΠΈΠ·ΡΡΠ½ΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π΅ΠΊΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Redis ΠΈΠ·ΠΎΠ±ΡΠΎ Π±Π΅Π· Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΠΏΡΠ²Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° 3 ΠΎΡ 5 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΠΏΡ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°, ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΠΈ Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠΌΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ 3 Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π·Π° ΡΡΡΠΈΡ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΠΌΠ΅, Π° Π΄ΡΡΠ³ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ΅Π΄ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π½Π°ΡΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π±ΡΠ°Π²ΠΈ.
ΠΠΊΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π°ΠΏΡΠ΅Π΄ (AOF), ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ Π»Π΅ΠΊΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΡΡΠ²ΡΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° SHUTDOWN ΠΈ Π³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π² Redis ΡΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΠΏΠΎ ΡΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½, ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ΡΠ΅ Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½, Π²ΡΠΈΡΠΊΠΈ Π½Π°ΡΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΡΠ° Π½Π°ΡΠ΅Π΄. Π’ΠΎΠ²Π° Π΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΡΡΠΈΠ³Π° Π΄Π° Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ°? ΠΠΊΠΎ Redis Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ fsync ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ° Π²ΡΡΠΊΠ° ΡΠ΅ΠΊΡΠ½Π΄Π°, ΡΠΎΠ³Π°Π²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π΄Π° Π½ΡΠΌΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡ ΠΊΠ»ΡΡ. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ½ΠΎ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΡΠΊΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ, ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ fsync=always
Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π·Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ΅ ΡΠ±ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π΄ΠΎ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° CP ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ.
ΠΠΎ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄. ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°, Π·Π°ΡΠΎΡΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ»Π΅Π΄ ΠΏΠΎΠ²ΡΠ΅Π΄Π°, ΡΡ Π²Π΅ΡΠ΅ Π½Π΅ ΡΡΠ°ΡΡΠ²Π° Π² Π½ΠΈΡΠΎ Π΅Π΄Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΠ° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ²Π°, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡΡ ΠΎΡΡΠ°Π²Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅, ΠΌΠ°Π»ΠΊΠΎ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ TTL, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΠΈΠ·ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π΄ΠΎΡΠΈ ΠΏΡΠΈ Π»ΠΈΠΏΡΠ° Π½Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½ΡΡΠ²ΠΎ Π² Redis. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΎΠ±Π°ΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Π»ΠΎΠ±Π° Π·Π° Π½Π°ΡΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΡΡ, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΡΡΠ°Π½Π΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π·Π° TTL (ΠΈ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΡΠ΅ΡΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ ΠΏΡΠ΅Π· ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅).
Π£Π²Π΅Π»ΠΈΡΠ°Π²Π°ΠΌΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ°: ΡΠ°Π·ΡΠΈΡΡΠ²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ΡΠΎ
ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ°, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΠΌΠ°Π»ΠΊΠΈ ΡΡΡΠΏΠΊΠΈ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡΡΠ°. ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π°ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Π΅ Π·Π°Π΅Ρ Ρ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ ΠΎΠΏΠ°ΡΠ½ΠΎ Π½ΠΈΡΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ Lua ΡΠΊΡΠΈΠΏΡ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π° TTL Π½Π° ΠΊΠ»ΡΡΠ°, Π°ΠΊΠΎ ΠΊΠ»ΡΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΌΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΡΠΎ.
ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΠΌΠΈΡΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π΅ ΡΡΠΏΡΠ» Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ.
ΠΡΡΠ½ΠΎ Π΅, ΡΠ΅ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡΡ Π±ΡΠΎΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΈ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠ°Π»ΠΊΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com