Яке рішення для кешування вибрати і чому

Рішення для кешування допомагають прискорити роботу програми. Під час пошуку найкращих рішень кешування, Redis і Memcached стали двома найпопулярнішими варіантами.

Але як вирішити, який з них вибрати, коли ви порівнюєте Redis і Memcached? Цей посібник допоможе вам зрозуміти, що вони можуть запропонувати, і допоможе прийняти обґрунтоване рішення.

Незалежно від того, чи хочете ви підвищити швидкість додатків, зменшити навантаження на базу даних або плавно масштабувати систему, розуміння рішень для кешування є важливим.

Хоча Redis і Memcached можна використовувати як рішення для кешування додатків, у них є свої особливості. З одного боку, обидва пропонують вам субмілісекундні затримки та високу пропускну здатність; з іншого боку, вони відрізняються такими функціями, як підтримка структур даних і зберігання.

Але перш ніж поринути в Redis проти Memcached, давайте подивимося на кешування.

Що таке кешування і навіщо воно потрібне?

Коли ви виконуєте будь-яку операцію у своїй програмі, вона використовує ваші системні ресурси. Це може бути ваша обробка, коли ви виконуєте завдання, що інтенсивно використовує процесор. Або це може бути мережеве завдання, як-от читання з файлу чи бази даних.

Продуктивність вашої системи погіршується, якщо ви багаторазово виконуєте одне і те ж завдання, що інтенсивно використовує процесор або мережу. Розглянемо сценарій, коли ви шукаєте деякі дані в базі даних, і ваш запит складний. Для обчислення та отримання даних із бази даних знадобиться не лише час, але складний запит потребує більше ресурсів бази даних.

А тепер уявіть, що результат запиту не зміниться між двома послідовними запитами. Однак ви все одно запускаєте той самий дорогий запит кожного разу, коли вам потрібні дані. Ну а якщо є альтернатива? Ось де в гру вступає кешування.

За своєю суттю кешування передбачає зберігання даних, до яких часто звертаються, у високошвидкісній пам’яті. Це дає змогу швидко отримати їх, коли дані запитуються знову. Крім того, ви усуваєте необхідність повторювати ресурсомісткі операції, такі як запити до бази даних або складні обчислення. Таким чином, ви покращуєте продуктивність, ефективність і чуйність системи.

Ось які переваги ви отримуєте від кешування:

  • Ваші затримки зменшено
  • Ваші веб-сайти та програми завантажуються та реагують швидше
  • Зменшується непотрібне використання ресурсів
  • Зрештою, ви зменшите навантаження на внутрішні сервери
  • Ваша база даних захищена від частих важких запитів

Redis: огляд

Redis це сховище даних з відкритим кодом, яке працює в пам’яті. Ви зберігаєте дані в парах ключ-значення. Окрім використання його як рішення для кешування, ви можете використовувати Redis як базу даних, брокер повідомлень або чергу.

Оскільки Redis працює в пам’яті, ви отримуєте затримки запитів менше мілісекунди. Отримання даних з пам’яті відбувається набагато швидше, ніж з диска. Таким чином, ви отримуєте дуже високу пропускну здатність і можете виконувати багато читань і записів за секунду.

Коли ви порівнюєте Redis з Memcached, Redis підтримує широкий діапазон структур даних. Ви можете зберігати будь-які текстові або двійкові дані у вигляді рядків (максимальний розмір 512 МБ). Якщо вам потрібно зберігати об’єкти, ви можете використовувати пари «поле-значення», які називаються хешами. Якщо вам потрібно зберігати колекцію рядків, ви можете використовувати списки, набори або відсортовані набори.

  Як перемістити нотатки з iPhone в iCloud

Ви отримуєте підтримку клієнтської бібліотеки для основних мов програмування – Java, Python, Go, NodeJs, C# (C-Sharp) і .Net (Dot Net). Крім того, коли ви встановлюєте Redis, ви отримуєте вбудовану утиліту командного рядка під назвою redis-cli. Цей інструмент CLI дозволяє швидко перевірити, чи ваш сервер Redis працює належним чином. Ви також можете надсилати команди для читання, запису або зміни даних.

Переваги Redis

  • Redis є відкритим кодом і доступний безкоштовно
  • Є офіційні клієнти для основних мов програмування
  • Ви можете використовувати його як рішення для кешування, брокер повідомлень, базу даних або чергу
  • Він пропонує дуже високу продуктивність із затримками до мілісекунди
  • Ви отримуєте кілька вбудованих структур даних, як-от рядки, списки, набори та відсортовані набори
  • Завдяки архітектурі основної репліки ви отримуєте високу доступність і масштабованість

Далі ми детально обговоримо Memcached.

Memcached: огляд

Memcached це безкоштовна система кешування об’єктів розподіленої пам’яті з відкритим кодом. Він пропонує дуже високу продуктивність. Ви отримуєте сховище ключ-значення в пам’яті для невеликих фрагментів довільних даних. Але перш ніж порівнювати Redis з Memcached, давайте подивимося, що саме робить Memcached.

Пам’ять у вашій комп’ютерній системі розподілена нерівномірно. Вільна пам’ять присутня у довільних блоках і різних розмірах. Memcached дозволяє отримати доступ до доступної пам’яті з різних частин вашої системи. Таким чином, ви берете пам’ять там, де є надлишок, і використовуєте її там, де вона потрібна.

Будучи простим сховищем ключів і значень, сервери Memcached не розуміють, що представляють дані. Ви зберігаєте необроблені попередньо серіалізовані дані разом із ключем, часом закінчення терміну дії та необов’язковими прапорцями. Крім того, ви також не отримуєте жодної підтримки для вбудованих структур даних.

У порівнянні з Redis, сервери Memcached не спілкуються один з одним. Ви не отримуєте синхронізацію, реплікацію чи трансляцію. Таким чином, доступність кешу та визнання недійсними спрощуються. Як клієнт ви видаляєте або перезаписуєте дані безпосередньо на сервері, якому вони належать.

Завдяки цій надзвичайно простій архітектурі Memcached забезпечує дуже високу продуктивність. На швидкісній машині з високошвидкісною мережею Memcached може легко обробляти понад 200 000 запитів на секунду.

Переваги Memcached

  • Оскільки він використовує дані в пам’яті, пошук відбувається швидше порівняно зі звичайним диском
  • Існують API для найпопулярніших мов програмування
  • Memcached зменшує потребу в повторному пошуку даних, кешуючи результати
  • Ви можете кешувати результати бази даних, відповіді API або навіть відтворені веб-сторінки
  • Це допомагає відновити фрагментовану пам’ять
  • Він використовує кешування «Нещодавно використані», і термін дії елементів закінчується через визначений час
  • Ви можете створювати власні абстракції як Memcached

Далі ми дослідимо різницю між Redis і Memcached.

Redis проти Memcached: порівняльна таблиця

Особливості RedisMemcachedData Structures. Підтримує вбудовані структури даних, як-от рядки, списки, набори, відсортовані набори. Немає підтримки вбудованих структур даних. Зберігаються необроблені попередньо серіалізовані дані Розмір данихМожна зберігати значення розміром до 512 МБМожна зберігати значення розміром до 1 МБ Підтримка дискового сховища Внутрішня підтримка дискового зберігання за допомогою Redis Database File (RDB) або Append-Only Files (AOF) Немає вбудованої підтримки для запису на диск. Інструменти сторонніх виробників, наприклад libmemcached-інструменти доступні ThreadingВін однопотоковийВін багатопотоковий РеплікаціяМає архітектуру основної репліки, яка дозволяє йому мати реплікаціюНе підтримує реплікацію.Вигнання кешу.Використовує політику найменш використаного для вилучення кешу. Інші політики можна налаштувати. Використовує політику «Нещодавно використані» для видалення кешу. Мови програмування. Підтримує основні мови програмування. Підтримує основні мови програмування.

  Як видалити будь-який пристрій розумного будинку з програми Amazon Alexa

Тепер давайте розглянемо деякі випадки використання, які вирішуються Redis і Memcached.

Варіанти використання Redis і Memcached

#1. Масштабне обслуговування електронної комерції: Shopify

Якщо ви коли-небудь шукали продавати товари в Інтернеті, то, швидше за все, ви натрапили на Shopify. Це багатоканальна платформа електронної комерції, яка дозволяє легко створити онлайн-магазин для вашого бізнесу. На піку свого розвитку Shopify обслуговує 80 тисяч запитів на секунду, забезпечуючи 600 тисячам продавців. Однак обробка такого трафіку з мінімальними затримками є проблемою.

Щоб вирішити цю проблему, Shopify використовує як Memcached, так і Redis у своєму стеку технологій. За своєю суттю Shopify має досить просту архітектуру, яка використовує MySQL для бази даних, Memcached як сховище ключ-значення та Redis для черги. Іноді вам не потрібно дивитися на Redis проти Memcached. Швидше, ви можете використовувати обидва в архітектурі своєї програми.

Коли ви дивитеся на будь-яку платформу електронної комерції, є багато статичних даних, які змінюються не так часто. Це стосується таких речей, як зображення предметів, описи та інформація про магазин. Замість того, щоб запитувати всі ці дані для кожного запиту, їх зберігання в сховищі ключ-значення робить систему швидкою та покращує її продуктивність.

Використання такого рішення для кешування, як Memcached, для обслуговування статичного вмісту зменшує навантаження на сервери та бази даних.

#2. Кешування даних розподіленої програми: Pinterest

Pinterest став найбільшим місцем, куди люди приходять шукати натхнення. Ви можете зайти на Pinterest і подивитися на всі піни та дошки, створені іншими людьми. За лаштунками багато чого відбувається. Кожен запит, який надходить, проходить через кілька різних служб і виконує великий обсяг обчислень. Це також передбачає перегляд шпильок і рекомендацій.

Щоб захистити серверні служби та уникнути повторних обчислень, Pinterest використовує рівень розподіленого кешу. Тут зберігаються результати повторних обчислень. Таким чином, запити не досягають послуг і баз даних, які потребують великих обчислень або зберігання. Навпаки, кеш поглинає значну частку трафіку. Рівень кешу Pinterest охоплює тисячі машин і обслуговує понад 150 мільйонів запитів на секунду.

Якщо ви подивіться, як Pinterest керує своїм рівнем кешування, ви побачите, що він запускає Memcached і mcrouter як її кістяк. Завдяки своїй асинхронній природі, керованій подіями, і багатопотоковій обробці, Memcached надзвичайно ефективний. Додайте до цього той факт, що він має дуже просту архітектуру. Ви можете створювати власні абстракції та горизонтально масштабувати їх. Ось як Pinterest обробляє свій трафік.

#3. Керування безпекою даних у масштабі: CloudSponge

Якщо ви шукаєте програмне забезпечення як послугу (SaaS), яке дозволяє вашим користувачам швидко надсилати запрошення, купони чи вітальні листівки, то CloudSponge — це відповідь. Це допомагає користувачам імпортувати всі основні адресні книги, щоб користувачам не доводилося вручну вводити контактні адреси електронної пошти.

За один рік CloudSponge обробляє через свої сервери майже 2 трильйони електронних адрес. Це пов’язано з проблемою безпеки, оскільки будь-яка вразливість у системі може дати хакерам можливість викрасти дані.

Ви можете використовувати Redis не просто як рішення для кешування. Це саме те, що робить CloudSponge. Redis зберігає всі контактні дані в пам’яті. Дані зберігаються рівно стільки, скільки клієнти можуть їх отримати. Після цього воно видаляється. Жодні дані не зберігаються на диску, навіть якщо Redis надає цю опцію.

  10 найкращих гаманців Tron для зберігання та керування токенами TRX

#4. Інші поширені способи використання рішень для кешування

Ось деякі з інших поширених сценаріїв, у яких використовуються рішення для кешування:

❇️ Системи обміну повідомленнями в чаті

Якщо ви створюєте власну систему обміну повідомленнями в чаті, рішення для кешування є безцінним компонентом, який вам потрібен у вашій архітектурі. Ви можете зберігати дані, до яких часто звертаєтеся, наприклад профілі користувачів, списки контактів і останні повідомлення. Це, у свою чергу, допомагає зменшити навантаження на базу даних і підвищує швидкість реакції системи.

Функції в режимі реального часу, такі як індикатори введення тексту та сповіщення про присутність, також виграють від кешування. Якщо ви використовуєте розподілений кеш, ви можете масштабувати свої внутрішні сервери без необхідності збільшувати масштаб своїх кешів.

❇️ Служби визначення місцезнаходження

Якщо ви відкриваєте програму та переглядаєте служби на основі місцезнаходження, як-от приблизну відстань, час прибуття та рекомендації поблизу, ви покладаєтеся на кеш-пам’ять, налаштовану на дані про місцезнаходження. Дані про місцезнаходження зберігаються у формі геопросторового індексу.

За допомогою геопросторового індексу можна зберігати місцезнаходження будь-якого об’єкта у вашому сховищі даних. Redis за замовчуванням підтримує геопросторові індекси. Завдяки обслуговуванню з пам’яті інформацією про місцезнаходження можна ефективно обмінюватися в режимі реального часу.

❇️ Аналітика в реальному часі

Онлайн-ігри перетворилися на масову індустрію. Можливо, ви знайомі з кооперативними мобільними іграми чи фантастичними спортивними додатками, де гравці покладаються на затримку в секунду, щоб прийняти рішення або внести зміни.

Використовуючи кеш, ви можете мати аналітику в реальному часі, як-от підтримувати таблицю лідерів. Для таких додатків, як фентезі-спорт, ви можете зберігати статистику та інформацію про гравців на рівні кешу, щоб підвищити продуктивність додатка.

Який вибрати?

Redis виділяється як універсальний варіант із підтримкою різних структур даних, що робить його придатним для ваших програм, які вимагають не лише базового кешування. Його затримки запитів до мілісекунди та висока пропускна здатність, а також підтримка клієнтської бібліотеки для основних мов програмування роблять його сильним суперником для систем, які потребують як швидкості, так і гнучкості. Ви також отримуєте вбудовану підтримку збереження даних на диску, якщо вам це потрібно.

З іншого боку, Memcached перевершує, коли йдеться про простоту та високу швидкість кешування. Це ідеальний вибір для вас, коли ви використовуєте кешування необроблених, попередньо серіалізованих даних. Він ефективно використовує доступну пам’ять у різних частинах вашої системи. Проста архітектура Memcached забезпечує дуже високу продуктивність, особливо на швидких машинах із високошвидкісною мережею.

Щоб зробити правильний вибір між Redis і Memcached, враховуйте такі фактори, як складність програми, вимоги до структури даних і масштабованість. Redis чудово підходить для ситуацій, коли вам потрібні різноманітні структури даних і більш розширені функції, тоді як Memcached забезпечує найнижчі затримки та найвищу пропускну здатність у простих, високопродуктивних сценаріях кешування.

Коли справа доходить до Redis проти Memcached, рішення в кінцевому рахунку має узгоджуватися з конкретними цілями та обмеженнями вашого проекту. Іноді кешування даних програми може бути недостатньо.

Далі перевірте, як налаштувати локальний сервер кешування DNS у Linux.