Redis (Remote Dictionary Service) β€” это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, построСнноС Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ β€œΠΊΠ»ΡŽΡ‡-значСниС”. Оно отличаСтся высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ благодаря использованию IO multiplexing ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ event loop, Ρ‡Ρ‚ΠΎ позволяСт эффСктивно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы. Основная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния Redis β€” это систСмы с трСбованиями ΠΊ минимальной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ высокой скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Redis ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΡƒΡŽ модСль выполнСния с использованиСм multiplexing для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с запросами, Ρ‡Ρ‚ΠΎ обСспСчиваСт простоту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:

  • Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство ΠΊΠΎΠΌΠ°Π½Π΄
  • МоТно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Lua. Но Π² ΡƒΡ€Π΅Π·Π°Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.
  • Π˜ΠΌΠ΅Π΅Ρ‚ слоТныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹: списки, Ρ…Π΅Ρˆ-ΠΌΠ°ΠΏΡ‹
  • Π•ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΡ‹ подписки pub/sub.
  • ΠžΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ
  • Написан Π½Π° C
  • Π•ΡΡ‚ΡŒ пСрсистСнтный Ρ€Π΅ΠΆΠΈΠΌ
  • ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ΡΡ
  • МоТно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ
  • Π•ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

**ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ благодаря ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° слоТных структур Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ использования Ρ‡Π΅Ρ€Π΅Π· CLI ΠΈ клиСнтскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

НСдостатки:

  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки ΠΈ управлСния кластСром.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ pub/sub ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, RabbitMQ).
  • ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡ‘ΠΌ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Redis ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях:

  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: ускорСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с частым доступом.
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиями: Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • РаспрСдСлённая Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°: установка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами.
  • ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сообщСниями с использованиСм структур Π΄Π°Π½Π½Ρ‹Ρ… (списки, ΠΏΠΎΡ‚ΠΎΠΊΠΈ).
  • ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…: подсчёт просмотров, Π»Π°ΠΉΠΊΠΎΠ².
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ частоты запросов: Redis позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚Ρ‹ Π½Π° частоту запросов для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… IP-адрСсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • Π Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ ΠΈ сортировки: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сортированных мноТСств (ZSet).
  • Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ID: МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redis для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

  • Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² RAM ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² 1000 Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π° дискС.
  • Redis ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IO multiplexing ΠΈ single-threaded execution loop для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Redis задСйствуСт нСсколько эффСктивных Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ….

Redis ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° сохранСния Π΄Π°Π½Π½Ρ‹Ρ….

  • RDB созданиС снимков Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  • AOF Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…
    ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ RDB + AOF позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΈ надёТности. Π’ случаС катастрофы Redis сначала восстанавливаСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· послСднСго RDB-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ воспроизводит ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· AOF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ

Π Π΅ΠΏΠ»ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния. НуТно Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ запроса Π½Π΅ Π² Ρ‚Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ, рСдис ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ ошибкой, ΡƒΠΊΠ°Π·Π°Π² хост, ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос.

Π§Ρ‚ΠΎ Ссли ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· мастСров? Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС кластСр Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ адрСс.

Π•ΡΡ‚ΡŒ senitel. ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выступаСт оркСстратором ΠΈ прокси. Он сам Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Π½ΠΎΠ΄Ρƒ. Он ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Failover?

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ

  • ΠŸΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 6379
  • ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с гСолокациями