Jaké řešení pro ukládání do mezipaměti zvolit a proč

Řešení ukládání do mezipaměti vám pomohou urychlit výkon vaší aplikace. Při hledání nejlepších řešení pro ukládání do mezipaměti Redis a Memcached vyjdou jako dvě z nejoblíbenějších možností.

Ale jak se rozhodnout, který z nich si vybrat, když porovnáváte Redis vs. Memcached? Tento průvodce vám pomůže pochopit, co oba mohou nabídnout, a dovede vás k informovanému rozhodnutí.

Ať už chcete zvýšit rychlost své aplikace, snížit zatížení databáze nebo plynule škálovat systém, pochopení řešení ukládání do mezipaměti je důležité.

Zatímco Redis a Memcached lze použít jako řešení pro ukládání do mezipaměti aplikací, mají své vlastní funkce. Na jedné straně vám oba nabízejí submilisekundové latence a vysokou propustnost; na druhé straně se liší ve funkcích, jako je podpora datových struktur a úložiště.

Než se ale ponoříme do Redis vs. Memcached, podívejme se na ukládání do mezipaměti.

Co je ukládání do mezipaměti a proč jej potřebujete?

Když v aplikaci provádíte jakoukoli operaci, spotřebovává vaše systémové prostředky. Může to být vaše zpracování, když spouštíte úlohu náročnou na CPU. Nebo to může být úkol náročný na síť, jako je čtení ze souboru nebo databáze.

Výkon vašeho systému je ovlivněn, když opakovaně provádíte stejnou úlohu náročnou na CPU nebo síť. Zvažte scénář, kdy vyhledáváte nějaká data z databáze a váš dotaz je složitý. Nejen, že výpočet a načtení dat z databáze bude nějakou dobu trvat, ale složitý dotaz spotřebuje více zdrojů vaší databáze.

Nyní si představte, že mezi dvěma po sobě jdoucími požadavky nedojde k žádné změně ve výsledku dotazu. Stále však spouštíte stejný drahý dotaz pokaždé, když potřebujete data. No, co když existuje alternativa? Zde vstupuje do hry ukládání do mezipaměti.

Ve svém jádru ukládání do mezipaměti zahrnuje ukládání často používaných dat do vysokorychlostní paměti. To vám umožní rychle je získat, když jsou data znovu požadována. Navíc eliminujete potřebu opakovat operace náročné na zdroje – jako jsou databázové dotazy nebo složité výpočty. Zlepšíte tak výkon systému, efektivitu a odezvu.

Zde jsou výhody, které získáte z ukládání do mezipaměti:

  • Vaše latence jsou sníženy
  • Vaše webové stránky a aplikace se načítají a reagují rychleji
  • Snižuje se zbytečné využití zdrojů
  • Skončíte s menší zátěží na backendových serverech
  • Vaše databáze je chráněna před často spouštěnými těžkými dotazy

Redis: Přehled

Redis je úložiště dat s otevřeným zdrojovým kódem, které funguje v paměti. Data ukládáte v párech klíč–hodnota. Kromě použití jako řešení pro ukládání do mezipaměti můžete Redis použít jako databázi, zprostředkovatele zpráv nebo frontu.

  Co to znamená, když váš Fitbit říká, že data nejsou vymazána, synchronizujte a zkuste to znovu?

Protože Redis běží v paměti, získáte zpoždění dotazů v řádu milisekund. Načítání dat z paměti je mnohem rychlejší než z disku. Získáte tak velmi vysokou propustnost a můžete provést mnoho čtení a zápisů za sekundu.

Když porovnáváte Redis vs. Memcached, Redis podporuje širokou škálu datových struktur. Můžete uložit libovolný text nebo binární data ve formě řetězců (maximální velikost 512 MB). Pokud potřebujete ukládat objekty, můžete použít dvojice pole-hodnota zvané hash. Pokud musíte uložit kolekci řetězců, můžete použít seznamy, sady nebo seřazené sady.

Získáte podporu klientských knihoven pro hlavní programovací jazyky – Java, Python, Go, NodeJs, C# (C-Sharp) a .Net (Dot Net). Když si navíc nainstalujete Redis, získáte vestavěný nástroj příkazového řádku s názvem redis-cli. Tento nástroj CLI vám umožní rychle zkontrolovat, zda váš server Redis funguje správně. Můžete také odesílat příkazy pro čtení, zápis nebo úpravu dat.

Výhody Redis

  • Redis je open-source a je k dispozici zdarma
  • Existují oficiální klienti pro hlavní programovací jazyky
  • Můžete jej použít jako řešení pro ukládání do mezipaměti, zprostředkovatele zpráv, databázi nebo frontu
  • Nabízí velmi vysoký výkon se submilisekundovými latencemi
  • Získáte několik vestavěných datových struktur, jako jsou řetězce, seznamy, sady a tříděné sady
  • S architekturou primární repliky získáte vysokou dostupnost a škálovatelnost

Dále podrobně probereme Memcached.

Memcached: Přehled

Memcached je bezplatný a otevřený systém pro ukládání objektů do mezipaměti s distribuovanou pamětí. Nabízí velmi vysoký výkon. Získáte úložiště párů klíč–hodnota v paměti pro malé části libovolných dat. Ale než porovnáme Redis vs. Memcached, podívejme se, co přesně Memcached dělá.

Paměť ve vašem počítačovém systému není rovnoměrně rozložena. Volná paměť je přítomna v libovolných blocích a různých velikostech. Memcached vám umožňuje přístup k dostupné paměti z různých částí vašeho systému. Tak vezmete paměť tam, kde je přebytek, a použijete ji tam, kde je potřeba.

Servery Memcached jsou jednoduchým úložištěm párů klíč–hodnota a nechápou, co data představují. Ukládáte nezpracovaná předem serializovaná data spolu s klíčem, dobou vypršení platnosti a volitelnými příznaky. Navíc nezískáte žádnou podporu pro vestavěné datové struktury.

Ve srovnání s Redis servery Memcached spolu nemluví. Nezískáte synchronizaci, replikaci ani vysílání. Dostupnost mezipaměti a zneplatnění jsou tedy zjednodušeny. Jako klient odstraníte nebo přepíšete data přímo na serveru, který je vlastní.

Díky této extrémně jednoduché architektuře vám Memcached poskytuje velmi vysoký výkon. Na rychlém počítači s vysokorychlostní sítí můžete snadno nechat Memcached zpracovat 200 000+ požadavků za sekundu.

Výhody Memcached

  • Vzhledem k tomu, že používá data v paměti, je načítání rychlejší ve srovnání s tradičním diskem
  • Pro nejoblíbenější programovací jazyky jsou k dispozici API
  • Memcached snižuje potřebu opakovaného vyhledávání dat ukládáním výsledků do mezipaměti
  • Můžete uložit do mezipaměti výsledky databáze, odpovědi API nebo dokonce vykreslené webové stránky
  • Pomáhá vám získat zpět fragmentovanou paměť
  • Používá ukládání do mezipaměti Nejméně naposledy použitých a položky vyprší po zadané době
  • Můžete si vytvořit své vlastní abstrakce jako Memcached

Dále prozkoumáme rozdíl mezi Redis a Memcached.

Redis vs. Memcached: Srovnávací tabulka

FeaturesRedisMemcachedData StructuresHas podporuje vestavěné datové struktury, jako jsou řetězce, seznamy, sady, tříděné sadyŽádná podpora pro vestavěné datové struktury. Jsou uložena nezpracovaná předserializovaná data Velikost dat Lze ukládat hodnoty až do velikosti 512 MBJe možné ukládat hodnoty až do velikosti 1 MBDisk Storage SupportNativně podporuje diskové úložiště pomocí Redis Database File (RDB) nebo Append-Only Files (AOF) Neexistuje žádná nativní podpora pro zápis na disk. Nástroje třetích stran jako např libmemcached-tools jsou k dispoziciThreadingJe to jednovláknovéJe to vícevláknovéReplikaceMá architekturu primární repliky, která umožňuje replikaciNepodporuje replikaci Vyklizení mezipamětiPoužívá zásady nejméně naposledy použité pro vyklizení mezipaměti. Lze konfigurovat další zásadyPoužívá nejméně nedávno použité zásady pro vyřazení mezipamětiProgramovací jazykyPodporuje hlavní programovací jazykyPodporuje hlavní programovací jazyky

  11 AI podcastů, které utvoří vaši perspektivu

Nyní se podívejme na některé případy použití, které řeší Redis a Memcached.

Případy použití pro Redis a Memcached

#1. Poskytování elektronického obchodu v měřítku: Shopify

Pokud jste někdy hledali prodej produktů online, je pravděpodobné, že jste narazili na Shopify. Je to vícekanálová platforma elektronického obchodování, která vám umožní snadno vytvořit online obchod pro vaši firmu. Na svém vrcholu Shopify obsluhuje 80 000 požadavků za sekundu a pohání 600 000 obchodníků. Zvládnout takový provoz s minimální latencí je však problém.

K řešení tohoto problému používá Shopify ve svém technologickém zásobníku jak Memcached, tak Redis. Ve svém jádru má Shopify poměrně jednoduchou architekturu, která používá MySQL pro databázi, Memcached jako úložiště klíč-hodnota a Redis pro frontu. Někdy se nemusíte dívat na Redis vs. Memcached. Spíše je můžete použít ve vaší aplikační architektuře.

Když se podíváte na jakoukoli platformu elektronického obchodování, existuje mnoho statických dat, která se tak často nemění. To zahrnuje věci, jako jsou obrázky položek, popisy a informace o obchodě. Namísto dotazování na všechna tato data pro každý požadavek, jejich uložení do úložiště párů klíč–hodnota zrychlí systém a zlepší jeho výkon.

Použití řešení pro ukládání do mezipaměti, jako je Memcached, k poskytování statického obsahu snižuje zatížení vašich backendových serverů a databází.

#2. Distribuované ukládání dat aplikací do mezipaměti: Pinterest

Pinterest se stal největším prostorem, kam lidé přicházejí hledat inspiraci. Můžete jít na Pinterest a podívat se na všechny piny a nástěnky, které vytvořili jiní lidé. V zákulisí se toho děje hodně. Každý příchozí požadavek prochází několika různými službami a provádí velké množství výpočtů. To zahrnuje také sledování pinů a doporučení.

Za účelem ochrany backendových služeb a zamezení opakování výpočtů využívá Pinterest vrstvu distribuované mezipaměti. To ukládá výsledky opakovaných výpočtů. Požadavky se tak nedostanou do služeb a databází, které jsou náročné na výpočetní výkon nebo úložiště. Cache spíše absorbuje značnou část provozu. Vrstva mezipaměti Pinterestu zahrnuje tisíce počítačů a obsluhuje více než 150 milionů požadavků za sekundu.

Když se podíváte, jak Pinterest spravuje svou mezipaměťovou vrstvu, zjistíte, že spouští Memcached a mcrouter jako jeho páteř. Díky své asynchronní povaze řízené událostmi a vícevláknovému zpracování je Memcached extrémně efektivní. Přidejte k tomu fakt, že má velmi jednoduchou architekturu. Můžete si vytvořit své vlastní abstrakce a horizontálně je škálovat. Pinterest tak řeší svůj provoz.

#3. Zacházení s bezpečností dat ve velkém měřítku: CloudSponge

Pokud hledáte software jako službu (SaaS), který vašim uživatelům umožní rychle rozesílat pozvánky, kupóny nebo blahopřání, pak je řešením CloudSponge. Pomáhá svým uživatelům importovat všechny hlavní adresáře, takže uživatelé nemusí ručně zadávat kontaktní e-mailové adresy.

  Jak změnit více úrovní nadpisů v MS Word

Za jediný rok zpracuje CloudSponge prostřednictvím svých serverů téměř 2 biliony e-mailových adres. To přichází s vlastní bezpečnostní výzvou, protože jakákoli zranitelnost v systému může dát hackerům šanci ukrást data.

Redis můžete použít jako více než jen řešení pro ukládání do mezipaměti. Přesně to CloudSponge dělá. Redis uchovává všechna kontaktní data v paměti. Data jsou uchovávána tak dlouho, aby je zákazníci mohli získat. Poté se smaže. Žádné z dat není uloženo na disku, i když Redis tuto možnost poskytuje.

#4. Další běžná použití řešení ukládání do mezipaměti

Zde jsou některé z dalších běžných scénářů, kde se používají řešení pro ukládání do mezipaměti:

❇️ Systémy chatových zpráv

Pokud vytváříte svůj vlastní systém zasílání zpráv prostřednictvím chatu, pak řešení pro ukládání do mezipaměti jsou neocenitelnou součástí, kterou ve své architektuře potřebujete. Můžete ukládat často používaná data, jako jsou uživatelské profily, seznamy kontaktů a poslední zprávy. To zase pomáhá snížit zatížení databáze a zvyšuje odezvu systému.

Funkce v reálném čase, jako jsou indikátory psaní a upozornění na přítomnost, také těží z ukládání do mezipaměti. Pokud používáte distribuovanou mezipaměť, můžete škálovat své backendové servery, aniž byste museli škálovat mezipaměti.

❇️ Polohové služby

Pokud otevřete aplikaci a podíváte se na služby založené na poloze, jako je odhad vzdálenosti, čas příjezdu a doporučení v okolí, spoléháte se na mezipaměti vyladěné pro údaje o poloze. Údaje o poloze jsou uloženy ve formě geoprostorového indexu.

Pomocí geoprostorového indexu je možné uložit polohu libovolného objektu ve vašem datovém úložišti. Redis ve výchozím nastavení podporuje geoprostorové indexy. Díky tomu, že je obsluhován z paměti, lze informace o poloze efektivně sdílet v reálném čase.

❇️ Analýza v reálném čase

Online hraní se stalo masivním průmyslem. Možná znáte kooperativní mobilní hry nebo fantasy sportovní aplikace, kde se hráči při rozhodování nebo provádění změn spoléhají na méně než sekundovou latenci.

Pomocí mezipaměti můžete provádět analýzy v reálném čase, jako je udržování výsledkové tabulky. U aplikací, jako jsou fantasy sporty, můžete ukládat statistiky hráče a informace do mezipaměti, abyste zvýšili výkon aplikace.

Kterou byste si měli vybrat?

Redis vyniká jako všestranná možnost s podporou různých datových struktur, takže je vhodný pro vaše aplikace, které vyžadují více než jen základní ukládání do mezipaměti. Jeho latence dotazů v řádu milisekund a vysoká propustnost spolu s podporou klientských knihoven pro hlavní programovací jazyky z něj činí silného uchazeče o systémy vyžadující rychlost i flexibilitu. Získáte také nativní podporu pro uchování dat na disk, pokud to požadujete.

Na druhou stranu Memcached vyniká, pokud jde o jednoduchost a vysokorychlostní ukládání do mezipaměti. Je to pro vás ideální volba, když váš případ použití ukládá do mezipaměti nezpracovaná, předem serializovaná data. Efektivně využívá dostupnou paměť v různých částech vašeho systému. Přímá architektura Memcached má za následek velmi vysoký výkon, zejména na rychlých strojích s vysokorychlostní sítí.

Pro správnou volbu mezi Redis a Memcached zvažte faktory, jako je složitost vaší aplikace, požadavky na datovou strukturu a potřeby škálovatelnosti. Redis je skvělý pro situace, kdy požadujete různé datové struktury a pokročilejší funkce, zatímco Memcached vám poskytuje nejnižší latence a nejvyšší propustnost v přímočarých, vysoce výkonných scénářích ukládání do mezipaměti.

Pokud jde o Redis vs. Memcached, rozhodnutí by mělo být v souladu s konkrétními cíli a omezeními vašeho projektu. Někdy ukládání dat aplikací do mezipaměti nemusí stačit.

Dále se podívejte, jak nastavit místní server pro ukládání do mezipaměti DNS v systému Linux.