αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ Redis

ហេហេ!

αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αž“αžΆαŸ†αž˜αž€αž‡αžΌαž“αž›αŸ„αž€αž’αŸ’αž“αž€αž“αžΌαžœαž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž’αžαŸ’αžαž”αž‘αžŠαŸαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž˜αž½αž™αž’αŸ†αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžšαž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Redis αž αžΎαž™αž’αž‰αŸ’αž‡αžΎαž‰αž’αŸ’αž“αž€αž±αŸ’αž™αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαžšαŸ†αž–αžΉαž„αž‘αž»αž€αžšαž”αžŸαŸ‹ Redis αž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž˜αž½αž™αŸ” αž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ Redlock αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαž½αžšαž–αžΈ Martin Kleppmann αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžŸαŸ€αžœαž—αŸ… "αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‘αž»αž€αžαŸ’αž–αžŸαŸ‹αŸ”", αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžšαž…αŸ‚αž€αž…αžΆαž™αž‚αžΊαž‡αžΆαž”αž»αž–αŸ’αžœαž”αž‘αžŠαŸαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž’αž“αž’αžΆαž“αžšαž½αž˜αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆαž•αŸ’αžαžΆαž…αŸ‹αž˜αž»αžαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ”

αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž“αž·αž„αž”αŸ’αžšαž€αžΆαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž’αž“αž»αžœαžαŸ’αž DLM (Distributed Lock Manager) αžŠαŸ„αž™αž”αŸ’αžšαžΎ Redis αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αžΈαž˜αž½αž™αŸ—αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αž αžΎαž™αž€αžΆαžšαž’αžΆαž“αžΆαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž•αŸ’αžαž›αŸ‹αž‚αžΊαžαŸ’αžŸαŸ„αž™αžŽαžΆαžŸαŸ‹αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž…αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžšαž…αž“αžΆαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„αž”αž“αŸ’αžαž·αž…αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ Canonical αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒ αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ Redis αŸ” αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈ algorithm αžŠαŸ‚αž›αž αŸ…αžαžΆ αž…αžΆαž€αŸ‹αžŸαŸ„αžšαž€αŸ’αžšαž αž˜αžœαžΆαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαŸ„αžšαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™ αž αžΎαž™αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‡αžΆαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžŠαžαŸ‚αž˜αž½αž™αž’αž˜αŸ’αž˜αžαžΆαŸ” αž™αžΎαž„αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžŸαž αž‚αž˜αž“αŸαž“αžΉαž„αžœαž·αž—αžΆαž‚αžœαžΆ αž•αŸ’αžαž›αŸ‹αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’ αž“αž·αž„αž”αŸ’αžšαžΎαžœαžΆαž‡αžΆαž…αŸ†αžŽαž»αž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αž¬αž‡αŸ†αž“αž½αžŸαŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

αž˜αž»αž“αž“αžΉαž„αž”αž“αŸ’αžαž‘αŸ…αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αŸ” αž–αž½αž€αž‚αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αžΆαž―αž€αžŸαžΆαžšαž™αŸ„αž„αŸ”

  • Redlock-rb (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Ruby) αŸ” αž€αŸαž˜αžΆαž“αžŠαŸ‚αžšαŸ” សម Redlock-rb αžŠαŸ‚αž›αž”αž“αŸ’αžαŸ‚αž˜αž€αž‰αŸ’αž…αž”αŸ‹ (αžαŸ’αž”αžΌαž„) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ”
  • 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) αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ async αž“αž·αž„αž…αžΆαž€αŸ‹αžŸαŸ„αŸ”
  • ScarletLock (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ C# .NET αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžƒαŸ’αž›αžΆαŸ†αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžΆαž“)
  • Redlock4Net (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ C# .NET)
  • node-redlock (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ NodeJS) αŸ” αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αžŸαŸ„αŸ”

αž€αžΆαžšαž’αžΆαž“αžΆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αž·αž„αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“

αž™αžΎαž„αž“αžΉαž„αž™αž€αž‚αŸ†αžšαžΌαžαžΆαž˜αž€αžΆαžšαžšαž…αž“αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž”αžΈαž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž™αžΎαž„αž‚αž·αžαžαžΆαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž’αžΆαž“αžΆαž’αž”αŸ’αž”αž”αžšαž˜αžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž…αŸ‚αž€αž…αžΆαž™αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ”

  1. αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ– αž€αžΆαžšαž˜αž·αž“αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ” αž“αŸ…αž–αŸαž›αžŽαžΆαž˜αž½αž™ αž˜αžΆαž“αžαŸ‚αž’αžαž·αžαž·αž‡αž“αž˜αŸ’αž“αžΆαž€αŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž€αžΆαž“αŸ‹αžŸαŸ„αž”αžΆαž“αŸ”
  2. αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸƒαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž· A: αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„αž‘αŸαŸ” αžœαžΆαžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŠαŸ‚αž›αž…αžΆαž€αŸ‹αžŸαŸ„αž’αž“αž’αžΆαž“αž”αžšαžΆαž‡αŸαž™ αž¬αž…αž»αŸ‡αž…αžαž›αžΎαž•αŸ’αž“αŸ‚αž€αžŒαžΈαžŸαž•αŸ’αžŸαŸαž„αž€αŸαžŠαŸ„αž™αŸ”
  3. αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸƒαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž· B: αž€αžΆαžšαž’αžαŸ‹αž±αž“αž€αŸ†αž αž»αžŸαŸ” αžŠαžšαžΆαž”αžŽαžΆαžαŸ’αž“αžΆαŸ†αž„ Redis αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αžαž·αžαž·αž‡αž“αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“ αž“αž·αž„αž”αž‰αŸ’αž…αŸαž‰αžŸαŸ„αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžŸαŸ’αžŠαžΆαžšαž‘αžΎαž„αžœαž·αž‰αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž‚αžΊαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡
αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž€αŸ‚αž›αž˜αŸ’αž’ αžŸαžΌαž˜αžœαž·αž—αžΆαž‚αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž…αžΆαž€αŸ‹αžŸαŸ„αžšαž…αŸ‚αž€αž…αžΆαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ Redis αŸ”

αžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž€αŸ‹αžŸαŸ„αž’αž“αž’αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ Redis αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΌαž“αžŸαŸ„αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαž™αž»αž€αžΆαž›αž€αŸ†αžŽαžαŸ‹ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž•αž»αžαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Redis αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αž·αž“αž™αžΌαžšαž˜αž·αž“αž†αžΆαž”αŸ‹αžŸαŸ„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ (αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž· 2 αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„)αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž‰αŸ’αž…αŸαž‰αž’αž“αž’αžΆαž“ αžœαžΆαž›αž»αž”αžŸαŸ„αŸ”

αž“αŸ… glance αžŠαŸ†αž”αžΌαž„, αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αŸ’αž’, αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™: αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαž»αž…αžαŸ‚αž˜αž½αž™αž“αŸƒαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αŸ” αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž‘αžΆαž αžšαžŽαŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Redis αž”αžšαžΆαž‡αŸαž™? αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜αž‘αžΆαžŸαž€αžš! αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαžœαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž”αž‘αž”αž„αŸ’αž αžΆαž‰αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αŸ” αž‡αžΆαž’αž€αž»αžŸαž› αž‡αž˜αŸ’αžšαžΎαžŸαž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αž‘αŸαŸ” αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αžΌαžœαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαž€αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž’αžΆαž“αžΆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸ„αŸ‡αž‘αŸ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž“αŸ…αž€αŸ’αž“αž»αž„ Redis αž‚αžΊαž’αžŸαž˜αž€αžΆαž›αŸ”

αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌαž”αŸ‚αž”αž“αŸαŸ‡ αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžŽαžΆαŸ†αž„αž€αžΎαžαž‘αžΎαž„αŸ–

  1. αž’αžαž·αžαž·αž‡αž“ A αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž“αŸ…αž›αžΎαž˜αŸαŸ”
  2. αž˜αŸαž”αžšαžΆαž‡αŸαž™αž˜αž»αž“αž–αŸαž›αž”αž‰αŸ’αž…αžΌαž›αž‚αž“αŸ’αž›αžΉαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αž‘αžΆαžŸαž€αžšαŸ”
  3. αž’αŸ’αž“αž€αžŠαžΎαžšαžαžΆαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ†αž‘αžΎαž„αž‹αžΆαž“αŸˆαž‡αžΆαž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ†αŸ”
  4. αž’αžαž·αžαž·αž‡αž“ B αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž“αŸ…αž›αžΎαž’αž“αž’αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž› A αž”αžΆαž“αž…αžΆαž€αŸ‹αžŸαŸ„αžšαž½αž…αž αžΎαž™αŸ” αž€αžΆαžšαžšαŸ†αž›αŸ„αž—αž›αžΎαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–!

αž‡αž½αž“αž€αžΆαž›αžœαžΆαž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαž›αŸˆαž‘αŸαžŸαŸˆαž–αž·αžŸαŸαžŸ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αž’αžαž·αžαž·αž‡αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž’αžΆαž…αž€αžΆαž“αŸ‹αžŸαŸ„αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αŸ‚αž”αž“αŸαŸ‡ αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž‘αŸαž™αžΎαž„αžŽαŸ‚αž“αžΆαŸ†αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‡αžΆαž˜αž½αž™αž§αž‘αžΆαž αžšαžŽαŸαžαŸ‚αž˜αž½αž™

αž˜αž»αž“αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž™αž€αžˆαŸ’αž“αŸ‡αž›αžΎαž…αŸ†αžŽαž»αž…αžαŸ’αžœαŸ‡αžαžΆαžαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžœαžαŸ’αžαž»αžαŸ‚αž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎ αž…αžΌαžšαž™αžΎαž„αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžšαžŽαžΈαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸαŸ‡αž²αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž–αŸ’αžšαŸ„αŸ‡αžαžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžŽαžΆαŸ†αž„αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“αž–αžΈαž–αŸαž›αž˜αž½αž™αž‘αŸ…αž–αŸαž›αž˜αž½αž™ αž αžΎαž™αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž“αŸ…αž›αžΎ single instance αž”αž˜αŸ’αžšαžΎαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αžŸαžΌαž˜αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αŸ–

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 αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‘αŸ’αžšαžΈαž˜ pseudo-random αž–αžΈαžœαžΆαŸ” αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„αž“αŸαŸ‡αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαž™αžΌαž“αžΈαž€αž€αŸ’αž“αž»αž„αž‚αž»αžŽαž—αžΆαž–αž”αž„αŸ’αž αžΆαž‰αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈ αž”αžΌαž€αž“αžΉαž„αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž’αžαž·αžαž·αž‡αž“αŸ” αžœαžΆαž˜αž·αž“αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ”

αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαž‡αžΆαžšαž„αŸ’αžœαžΆαžŸαŸ‹αž“αŸƒαž’αžΆαž™αž»αž€αžΆαž›αžšαž”αžŸαŸ‹αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ "αž’αžΆαž™αž»αž€αžΆαž›αžŸαŸ„αžš" αŸ” αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡αž‚αžΊαž‘αžΆαŸ†αž„αž…αŸ†αž“αž½αž“αž–αŸαž›αžœαŸαž›αžΆαž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž…αŸ†αž“αž½αž“αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž…αž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αž˜αž»αž“αž–αŸαž›αž’αžαž·αžαž·αž‡αž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αž…αžΆαž€αŸ‹αžŸαŸ„αž’αž“αž’αžΆαž“αž“αŸ„αŸ‡ αžŠαŸ„αž™αž˜αž·αž“αž”αŸ†αž–αžΆαž“αž›αžΎαž€αžΆαžšαž’αžΆαž“αžΆαž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ” αž€αžΆαžšαž’αžΆαž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΉαž˜αžαŸ‚αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž–αŸαž›αžŠαŸ‚αž›αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž·αž‰αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž–αž·αž—αžΆαž€αŸ’αžŸαžΆβ€‹αž’αŸ†αž–αžΈβ€‹αžœαž·αž’αžΈβ€‹αžŠαŸβ€‹αž›αŸ’αž’β€‹αž˜αž½αž™β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž“αž·αž„β€‹αžŠαŸ„αŸ‡β€‹αž›αŸ‚αž„β€‹αžŸαŸ„αžšαŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’ (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αž·αž“αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ‚αž›αž˜αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸαžαŸ‚αž˜αž½αž™ αž“αž·αž„αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“) αž‚αžΊαž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ” αž…αžΌαžšαž–αž„αŸ’αžšαžΈαž€αž‚αŸ†αž“αž·αžαž“αŸαŸ‡αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž…αžΆαž™ αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž’αžΆαž“αžΆαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ”

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ Redlock

αž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž“αŸ’αž˜αžαžαžΆαž™αžΎαž„αž˜αžΆαž“ N Redis masters αŸ” αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž―αž€αžšαžΆαž‡αŸ’αž™αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž–αžΈαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαžΎαž€αžΆαžšαž…αž˜αŸ’αž›αž„ αž¬αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ†αžšαž”αžŸαŸ†αžšαž½αž›αžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›αžŽαžΆαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸαŸ” αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž“αž·αž™αžΆαž™β€‹αžšαž½αž…β€‹αž αžΎαž™β€‹αž’αŸ†αž–αžΈβ€‹αžšαž”αŸ€αž”β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“ αž“αž·αž„β€‹αžŠαŸ„αŸ‡β€‹αžŸαŸ„αžšβ€‹αžŠαŸ„αž™β€‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–β€‹αž›αžΎβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αžαŸ‚αž˜αž½αž™αŸ” αž™αžΎαž„αž™αž›αŸ‹αžŸαŸ’αžšαž”αžαžΆ algorithm αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ instance αžαŸ‚αž˜αž½αž™ αž“αžΉαž„αž”αŸ’αžšαžΎαžœαž·αž’αžΈαž“αŸαŸ‡αž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹ N αžŠαž›αŸ‹ 5 αžŠαŸ‚αž›αž‡αžΆαžαž˜αŸ’αž›αŸƒαžŸαž˜αž αŸαžαž»αž•αž›αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαžΎαž˜αŸ Redis αž…αŸ†αž“αž½αž“ 5 αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αž¬αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαžαžΆαž–αž½αž€αžœαžΆαž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™αž–αžΈαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αž’αžαž·αžαž·αž‡αž“αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  1. αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž‚αž·αžαž‡αžΆαž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαŸ”
  2. αž–αŸ’αž™αžΆαž™αžΆαž˜αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž›αžΎαž€αžšαžŽαžΈ N αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαŸ„αž™αž”αŸ’αžšαžΎαžˆαŸ’αž˜αŸ„αŸ‡αž‚αž“αŸ’αž›αžΉαŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž…αŸƒαžŠαž“αŸ’αž™αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‘αžΈ 2 αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž€αŸ†αžŽαžαŸ‹αžŸαŸ„αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αžΈαž˜αž½αž™αŸ— αž’αžαž·αžαž·αž‡αž“αž”αŸ’αžšαžΎαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžœαžΆαžŠαŸ‚αž›αžαŸ’αž›αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžšαž™αŸˆαž–αŸαž›αž“αŸƒαž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž‚αžΊ 10 αžœαž·αž“αžΆαž‘αžΈ αž“αŸ„αŸ‡αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž’αžΆαž…αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡ ~ 5-50 αž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαŸ” αžœαžΆαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž’αžΆαž…αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž™αžΌαžšαžŠαžΎαž˜αŸ’αž”αžΈαž–αŸ’αž™αžΆαž™αžΆαž˜αžˆαžΆαž“αžŠαž›αŸ‹αžαŸ’αž“αžΆαŸ†αž„ Redis αžŠαŸ‚αž›αž”αžšαžΆαž‡αŸαž™αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎ instance αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“ αž“αŸ„αŸ‡αž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… instance αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž±αŸ’αž™αž”αžΆαž“αž†αžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ”
  3. αžŠαžΎαž˜αŸ’αž”αžΈαž™αž€αžŸαŸ„ αž’αžαž·αžαž·αž‡αž“αž‚αžŽαž“αžΆαžαžΆαžαžΎαž–αŸαž›αžœαŸαž›αžΆαž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ…αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžœαžΆαžŠαž€αž–αžΈαžαž˜αŸ’αž›αŸƒαž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž‘αžΈ 1αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎ αž“αž·αž„αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž’αžαž·αžαž·αž‡αž“αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αžšαž“αŸ…αž›αžΎαž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ (αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ 3) αž“αž·αž„αž–αŸαž›αžœαŸαž›αžΆαžŸαžšαž»αž”αžŠαŸ‚αž›αžœαžΆαž”αžΆαž“αž…αŸ†αžŽαžΆαž™αŸ” αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αžαž·αž…αž‡αžΆαž„αžšαž™αŸˆαž–αŸαž›αž…αžΆαž€αŸ‹αžŸαŸ„ αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž”αžΆαž“αž‘αž‘αž½αž›αŸ”
  4. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž› αž“αŸ„αŸ‡αžšαž™αŸˆαž–αŸαž›αž“αŸƒαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž‡αžΆαžšαž™αŸˆαž–αŸαž›αž…αžΆαž€αŸ‹αžŸαŸ„αžŠαžΎαž˜αžŠαž€αž–αžΈαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ…αžŠαŸ‚αž›αž”αžΆαž“αž‚αžŽαž“αžΆαž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž‘αžΈ 3αŸ”
  5. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžαž·αžαž·αž‡αž“αž”αžšαžΆαž‡αŸαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αžŠαŸ„αž™αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž‘αžΆαŸ†αž„αžœαžΆαž˜αž·αž“αž’αžΆαž…αž…αžΆαž€αŸ‹αžŸαŸ„αžœαžαŸ’αžαž» N/2+1 αž¬αžšαž™αŸˆαž–αŸαž›αž…αžΆαž€αŸ‹αžŸαŸ„αž‚αžΊαž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“) αž“αŸ„αŸ‡αžœαžΆαž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαŸ„αŸ‡αžŸαŸ„αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ (αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž’αŸ’αž“αž€αžŠαŸ‚αž›αž‚αž·αžαžαžΆαžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž”αžΆαž“αž€αŸαžŠαŸ„αž™αŸ” )

αžαžΎβ€‹αž€αŸ’αž”αž½αž“β€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž’αžŸαž˜αž€αžΆαž›β€‹αž‘αŸ?

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž“αžΆαž‘αž·αž€αžΆαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸαžŠαŸ„αž™ αž–αŸαž›αžœαŸαž›αžΆαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αž‚αŸ’αž“αžΆ αž αžΎαž™αž€αŸ†αž αž»αžŸαž‚αžΊαžαžΌαž…αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαžŸαžšαž»αž”αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αŸ” αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž€αžΆαžšαžŸαž“αŸ’αž˜αžαŸ‹αž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž’αž˜αŸ’αž˜αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž’αž˜αŸ’αž˜αžαžΆαŸ– αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž“αžΆαž‘αž·αž€αžΆαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ αž αžΎαž™αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž™αžΎαž„αž’αžΆαž…αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαžšαžœαžΆαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž‚αžΊαžαžΌαž…αŸ”

αž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž‡αžΆαž„αž˜αž»αž“αŸ– αž€αžΆαžšαžŠαž€αž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αžΆαž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž’αžαž·αžαž·αž‡αž“αž€αžΆαž“αŸ‹αžŸαŸ„αžšαž…αŸαž‰αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ„αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž– (αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž‘αžΈ 3) αžŠαž€αž–αŸαž›αžœαŸαž›αžΆαžαŸ’αž›αŸ‡αž‘αŸ€αž (αžŸαžšαž»αž”αž–αžΈαžšαž”αžΈ αž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž‘αžΌαž‘αžΆαžαŸ‹αžŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαžšαžœαžΆαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš)αŸ”

αž’αžαŸ’αžαž”αž‘αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž”αŸ’αžšαžΆαž”αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ‚αž”αž“αŸαŸ‡αžŠαŸ‚αž›αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αž“αŸƒαž…αž“αŸ’αž›αŸ„αŸ‡αž–αŸαž›αŸ– αž€αžΆαžšαž‡αž½αž›αŸ– αž™αž“αŸ’αžαž€αžΆαžšαž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™.

αž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαž›αžΎαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž”αžšαžΆαž‡αŸαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž…αŸƒαžŠαž“αŸ’αž™αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΎαž˜αŸ’αž”αžΈ de-synchronize αž’αžαž·αžαž·αž‡αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž–αŸ’αž™αžΆαž™αžΆαž˜αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž“αŸ…αž›αžΎαž’αž“αž’αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ (αžŠαŸ‚αž›αž’αžΆαž…αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž– "αž”αŸ†αž”αŸ‚αž€αžαž½αžšαž€αŸ’αž”αžΆαž›" αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡)αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž€αžΆαž“αŸ‹αžαŸ‚αž›αžΏαž“αž’αžαž·αžαž·αž‡αž“αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžšαž›αžΎαž€αžšαžŽαžΈ Redis αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž“αŸ„αŸ‡αž”αž„αŸ’αž’αž½αž…αž€αžΆαž“αŸ‹αžαŸ‚αžαžΌαž…αž…αž„αŸ’αž’αŸ€αž αžŠαŸ‚αž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžαž½αžšαž€αŸ’αž”αžΆαž›αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„ (αž“αž·αž„αžαž·αž…αž‡αžΆαž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αž) αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž· αž’αžαž·αžαž·αž‡αž“αž‚αž½αžšαžαŸ‚αž–αŸ’αž™αžΆαž™αžΆαž˜αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ SET αž‘αŸ… N instances αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎ multiplexing αŸ”

αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž„αŸ’αž€αžαŸ‹αž’αŸ’αž„αž“αŸ‹αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαžΆαžαžΎαžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž™αŸ‰αžΆαž„αžŽαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαž·αžαž·αž‡αž“αžŠαŸ‚αž›αž”αžšαžΆαž‡αŸαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αŸαž‰αžŸαŸ„αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“ (αžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αž‚αŸαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžšαž„αŸ‹αž…αžΆαŸ†αžŸαŸ„αž•αž»αžαž€αŸ†αžŽαžαŸ‹αž˜αž»αž“αž–αŸαž›αžŸαŸ„αžšαž’αž“αž’αžΆαž“αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž”αŸ‚αž€αžαŸ’αž‰αŸ‚αž€αž”αžŽαŸ’αžαžΆαž‰αž€αžΎαžαž‘αžΎαž„ αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™ 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 αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

αžαžΎβ€‹αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž•αŸ’αžαž›αŸ‹β€‹αž—αžŸαŸ’αžαž»αžαžΆαž„β€‹αž‡αžΆβ€‹αž•αŸ’αž›αžΌαžœβ€‹αž€αžΆαžšβ€‹αž“αŸƒβ€‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž”αž„αŸ’αž αžΆαž‰β€‹αž–αžΈβ€‹αž€αŸ’αž”αž½αž“β€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž‚αŸ’αž“αžΆβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŸαŸ’αžšαžΆαž”αŸ‹ αž¬β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αž€αŸ†αž αž»αžŸβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž…αŸ†αžŽαž»αž…β€‹αžαžΆαž„β€‹αž›αžΎβ€‹αž”αžΆαž“β€‹αž‘αŸ?

αž€αžΆαžšαž–αž·αž…αžΆαžšαžŽαžΆαž’αŸ†αž–αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›

αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž”αžΈαŸ–

  1. αžŠαŸ„αŸ‡αžŸαŸ„αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· (αž“αŸ…αž–αŸαž›αžŸαŸ„αž•αž»αžαž€αŸ†αžŽαžαŸ‹)αŸ– αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž“αžΉαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž˜αŸ’αžαž„αž‘αŸ€αž αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ„αŸ”
  2. αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž’αžαž·αžαž·αž‡αž“αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‡αž½αž™αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžŠαŸ„αž™αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ„αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž¬αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž αžΎαž™αž€αžΆαžšαž„αžΆαžšαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž‘αŸ†αž“αž„αž‡αžΆαžαžΆαž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžšαž„αŸ‹αž…αžΆαŸ†αžŸαŸ„αž•αž»αžαž€αŸ†αžŽαžαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž˜αŸ’αžαž„αž‘αŸ€αžαž“αŸ„αŸ‡αž‘αŸαŸ”
  3. αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αžαŸ’αžšαžΌαžœαž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αžœαžΆαžšαž„αŸ‹αž…αžΆαŸ†αžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž™αžΌαžšαž‡αžΆαž„αžšαž™αŸˆαž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αž“αŸαŸ‡αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžαž½αžšαž€αŸ’αž”αžΆαž›αž”αŸ†αž”αŸ‚αž€αžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž’αžΆαž“αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αžΆαž“αž€αžΆαžšαž–αž·αž“αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αžšαž€αž”αžΆαž“αžŸαŸ’αž˜αžΎαž“αžΉαž„ TTL αž“αŸƒαž•αŸ’αž“αŸ‚αž€αž”αžŽαŸ’αžαžΆαž‰ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž•αŸ’αž“αŸ‚αž€αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆ αž€αžΆαžšαž–αž·αž“αŸαž™αž’αžΆαž…αž“αžΉαž„αž‚αŸ’αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹αŸ” αžœαžΆαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŽαžΆαžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αŸ’αžšαŸ€αž€αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž˜αž»αž“αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž”αž‰αŸ’αž…αŸαž‰αžœαžΆαž”αžΆαž“αŸ”

αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžŠαž›αŸ‹αž±αŸ’αž™αž•αŸ’αž“αŸ‚αž€αž”αžŽαŸ’αžαžΆαž‰αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆαž‚αŸ’αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž½αž™αž’αžΆαž…αž“αŸ…αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž‚αŸ’αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αž“αž·αž„ fsync

αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž”αŸ’αžšαžΎ Redis αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž…αžΆαž€αŸ‹αžŸαŸ„αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž—αžΆαž–αž™αžΊαžαž™αŸ‰αžΆαžœαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“ αž“αž·αž„αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„ αž“αž·αž„αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αž·αž‰/αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸ‚αž›αž’αžΆαž…αž”αž‰αŸ’αž…αž”αŸ‹αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸαŸ‡ αž˜αžΆαž“αž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ N Redis αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž—αžΆαž–αž™αžΊαžαž™αŸ‰αžΆαžœαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžαŸ’αžšαž–αž αž»αž‚αž»αžŽ (ឬ "αž€αžΆαžšαž‚αž»αžŽαž”αž»αžšαžŸαž€αŸ’αžšαžΈαž€αŸ’αžš" αžŠαŸ‚αž›αžšαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž˜αž·αž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αž’αžΆαž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αžŠαŸ„αž™αžŸαž“αŸ’αž˜αžαžαžΆαž–αŸαž›αžœαŸαž›αžΆαž’αŸ’αžœαžΎαžŠαŸ†αžŽαžΎαžšαž‘αŸ…αž˜αž€αžšαžœαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž“αž·αž„αžœαžαŸ’αžαž»αž“αžΈαž˜αž½αž™αŸ—αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ) .

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž€αŸαžαŸ’αžšαžΌαžœαž™αž€αž˜αž€αž–αž·αž…αžΆαžšαžŽαžΆαž•αž„αžŠαŸ‚αžš αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžαž·αžαžαŸ†αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŸαŸ’αžαžΆαžšαž‘αžΎαž„αžœαž·αž‰αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž–αžΈαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αŸ”

αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž§αž”αž˜αžΆαžαžΆαž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Redis αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ” αž’αžαž·αžαž·αž‡αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ 3 αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜ 5 αž€αžšαžŽαžΈαŸ” αž€αžšαžŽαžΈαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αžšαžŽαžΈαžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αž“αŸ…αž–αŸαž›αž“αŸαŸ‡αž˜αžΆαž“ 3 αž€αžšαžŽαžΈαž˜αŸ’αžαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž”αžΆαž“ αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αŸ†αž–αžΆαž“αž›αžΎαž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžŠαŸ‚αž› αžŸαž“αŸ’αž˜αžαžαžΆαž—αžΆαž–αž•αŸ’αžαžΆαž…αŸ‹αž˜αž»αžαž“αŸƒαžŸαŸ„αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΎαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžΆαž„αž˜αž»αž (AOF) αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αžΉαž„αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž”αž“αŸ’αžαž·αž…αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ„αž™αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ SHUTDOWN αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰αŸ” αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αž»αžαž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Redis αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αž“αŸαž™αž’αŸ€αž” αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αŸαž›αžœαŸαž›αžΆαž”αž“αŸ’αžαž αžΌαžš αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž€αŸαžŠαŸ„αž™ αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž›αŸ’αž’αŸ” αž“αŸαŸ‡αž‡αžΆαžšαžΏαž„αž’αž˜αŸ’αž˜αžαžΆαž‘αŸ αžŠαžšαžΆαž”αžŽαžΆαž€αžΆαžšαž”αž·αž‘αž‡αžΆαž”αŸ’αžšαž…αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αžΆαŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαžΆαž…αŸ‹αž—αŸ’αž›αžΎαž„? αž”αŸ’αžšαžŸαž·αž“αž”αžΎ Redis αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ fsync αž“αŸ…αž›αžΎαžαžΆαžŸαžšαžΆαž›αŸ‹αžœαž·αž“αžΆαž‘αžΈ αž“αŸ„αŸ‡αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αžŠαŸ‚αž›αžαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αžŸαŸ„αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ” αžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž…αž„αŸ‹αž’αžΆαž“αžΆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž…αžΆαž€αŸ‹αžŸαŸ„αž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αž“αŸ„αŸ‡αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš fsync=always αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„αŸ” αžœαžΆαž“αžΉαž„αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’ CP αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž”αŸ’αžšαž–αŸƒαžŽαžΈ αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžŸαŸ„αžšαž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž‚αžΊαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž“αŸ… glance αžŠαŸ†αž”αžΌαž„αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžαŸ’αžαž»αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αžœαžΆαž˜αž·αž“αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžŸαž€αž˜αŸ’αž˜αž‘αŸ€αžαž‘αŸαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž”αžΆαž“αž“αžΌαžœαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž’αžΆαž“αžΆαžαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αžœαžαŸ’αžαž»αž“αŸ…αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž˜αž½αž™αž›αžΎαžŸαž–αžΈ TTL αž’αžαž·αž”αžšαž˜αžΆαžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαž”αž“αŸ’αžαž·αž…αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαž›αž”αžšαž·αž…αŸ’αž†αŸαž‘αž•αž»αžαž€αŸ†αžŽαžαŸ‹ αž“αž·αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αžΌαžœαžŸαŸ„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžŸαž€αž˜αŸ’αž˜αž“αŸ…αž–αŸαž›αž”αžšαžΆαž‡αŸαž™αŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αžœαžΆαž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αžœαžαŸ’αžŠαž˜αžΆαž“αž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„αžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„ Redis αž€αŸαžŠαŸ„αž™αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆ αž“αŸαŸ‡αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž•αžΆαž€αž–αž·αž“αŸαž™αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž”αŸ†αž–αžΆαž“αž›αžΎαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž”αžšαžΆαž‡αŸαž™ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‡αžΆαžŸαž€αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ TTL (αž αžΎαž™αž‚αŸ’αž˜αžΆαž“αž’αž“αž’αžΆαž“αžŽαžΆαž˜αž½αž™αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸαŸ‡)αŸ”

αž™αžΎαž„αž”αž„αŸ’αž€αžΎαž“αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™: αž™αžΎαž„αž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž’αžαž·αžαž·αž‡αž“αž˜αžΆαž“αž‡αŸ†αž αžΆαž“αžαžΌαž…αŸ— αžœαžΆαž’αžΆαž…αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžšαž™αŸˆαž–αŸαž›αž…αžΆαž€αŸ‹αžŸαŸ„αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαž™αž“αŸ’αžαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž„αŸ’αžšαžΈαž€αžŸαŸ„αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž€αŸ†αž–αž»αž„αžšαžœαž›αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžŽαž“αžΆ αž αžΎαž™αžαž˜αŸ’αž›αŸƒαž•αž»αžαž€αŸ†αžŽαžαŸ‹αž“αŸƒαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž” αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‰αžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž” Lua αž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαžŠαŸ‚αž›αž–αž„αŸ’αžšαžΈαž€ TTL αž“αŸƒαžŸαŸ„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸ„αž“αŸ…αžαŸ‚αž˜αžΆαž“ αž αžΎαž™αžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αžαŸ‚αž‡αžΆαžαž˜αŸ’αž›αŸƒαž…αŸƒαžŠαž“αŸ’αž™αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αž“αŸ…αž–αŸαž› αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αŸ”

αž’αžαž·αžαž·αž‡αž“αž‚αž½αžšαžαŸ‚αž–αž·αž…αžΆαžšαžŽαžΆαžαŸ‚αžŸαŸ„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‘αž‘αž½αž›αž”αžΆαž“αž‘αžΎαž„αžœαž·αž‰ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž€αŸ‹αžŸαŸ„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžŸαž»αž–αž›αž—αžΆαž–αŸ”

αž–αž·αžαž˜αŸ‚αž“ αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž…αŸ†αž“αž½αž“αž’αžαž·αž”αžšαž˜αžΆαž“αŸƒαž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αž αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž›αŸ„αž—αž”αŸ†αž–αžΆαž“αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹