Memcached vs Redis

1. Prehľad

V tomto článku preskúmame podobnosti a rozdiely dvoch populárnych databáz v pamäti, Memcached a Redis.

2. Memcached a Redis

Často myslíme na to ukladanie do pamäte cache na zlepšenie výkonu pri spracovaní veľkého množstva údajov.

Memcached je systém medzipamäte distribuovanej pamäte navrhnutý pre jednoduché použitie a jednoduchosť vhodný ako vyrovnávacia pamäť alebo úložisko relácií.

Redis je úložisko dátových štruktúr v pamäti, ktoré ponúka bohatú sadu funkcií. to je užitočné ako vyrovnávacia pamäť, databáza, sprostredkovateľ správ a front.

3. Inštalácia

3.1. Inštalácia Memcached

Môžeme nainštalovať najnovší server Memcached stiahnutím balíka a spustením urobiť:

$ wget //memcached.org/latest $ tar -zxvf memcached-1.6.3.tar.gz $ cd memcached-1.6.3 $ ./configure && make && make test && sudo make install

3.2. Inštaluje sa Redis

Podobne môžeme nainštalovať najnovší server Redis:

$ wget //download.redis.io/releases/redis-5.0.8.tar.gz $ tar xzf redis-5.0.8.tar.gz $ cd redis-5.0.8 $ značka

4. Podobnosti

4.1. Latimisová latencia

Memcached aj Redis ponúkajú doby odozvy pod milisekundu uchovávaním údajov v pamäti.

4.2. Delenie dát

Podobne obidve databázy v pamäti umožňujú distribúciu údajov medzi viacerými uzlami.

4.3. Podpora programovacích jazykov

Rovnako obidva podporujú všetky hlavné programovacie jazyky vrátane jazykov Java, Python, JavaScript, C a Ruby.

Pre obidve databázy v pamäti je navyše k dispozícii niekoľko klientov Java. Napríklad pre Memcached sú k dispozícii Xmemcached a Memcached-java-client, zatiaľ čo pre Redis sú dostupné Jedis, Lettuce a Redisson.

4.4. Vymazanie medzipamäte

Memcached umožňuje vyčistiť medzipamäť pomocou flush_all príkaz. Podobne nám Redis umožňuje vymazať všetko z medzipamäte pomocou príkazov ako FLUSHDB a FLUSHALL.

4.5. Škálovanie

Obidve riešenia ukladania do medzipamäte ponúkajú vysokú škálovateľnosť pri spracovaní veľkých údajov, keď dopyt rastie exponenciálne.

5. Rozdiely

5.1. Príkazový riadok

Memcached nám umožňuje spúšťať príkazy pripojením k serveru pomocou telnet:

$ telnet 10.2.3.4 5678 Skúša sa 10.2.3.4 ... Pripojené k 10.2.3.4. 
$ statistics STAT pid 14868 STAT uptime 175931 STAT time 1220540125 // ...

Na rozdiel od Memcached prichádza Redis s vyhradeným rozhraním príkazového riadku, redis-cli, čo nám umožňuje vykonávať príkazy:

$ redis-cli PRÍKAZ 1) 1) "uložiť" 2) (celé číslo) 1 3) 1) "admin" 2) "noscript" // ... 2) 1) "multi" 2) (celé číslo) 1 3) 1) „noscript“ 2) „rýchly“ // ... 3) 1) „geodist“ 2) (celé číslo) -4 3) 1) „iba na čítanie“ // ... // ...

Tu sme vykonali PRÍKAZ vypísať všetky príkazy poskytované programom Redis.

5.2. Dumping disku I / O

Memcached zvláda ukladanie disku iba pomocou nástrojov tretích strán, ako sú libmemcached-tools alebo vidličiek, ako je memcached-dd.

Redis však poskytuje vysoko konfigurovateľné predvolené mechanizmy na ukladanie diskov ako RDB (databázový súbor Redis) alebo AOF (súbory iba na pridanie). To môže byť užitočné pri archivácii a obnove.

Pomocou redis-cli môžeme vykonávať synchrónne ULOŽIŤ príkaz na vytvorenie snímky údajov v pamäti:

$ redis-cli ULOŽIŤ OK

Tu príkaz uloží snímku do a skládka.rdb binárny súbor a vráti stav Ok po dokončení.

Avšak vykonávanie asynchrónne BGSAVE spustí proces vytvárania snímky na pozadí:

$ redis-cli BGSAVE v poriadku

Ďalej môžeme použiť POSLEDNÉ ULOŽENIE príkaz na kontrolu Unixového času poslednej úspešnej snímky DB.

$ redis-cli LASTSAVE (celé číslo) 1410853592

5.3. Dátové štruktúry

Memcached ukladá páry kľúč - hodnota ako reťazec a pre každú hodnotu má limit veľkosti 1 MB. Avšak Redis podporuje aj ďalšie dátové štruktúry, ako sú zoznam, množina a hash, a dokáže ukladať hodnoty až do veľkosti 512 MB.

5.4. Replikácia

Memcached podporuje replikáciu s vidlami tretích strán, ako sú napríklad znova vygenerované.

Na rozdiel od Memcached nám Redis poskytuje funkcie na množenie klastrov replikáciou primárneho úložiska pre lepšiu škálovateľnosť a vysokú dostupnosť.

Najskôr môžeme použiť REPLIKA príkaz na vytvorenie repliky hlavného servera Redis. Ďalej vykonáme PSYNC príkaz na replike na spustenie replikácie z hlavného počítača.

5.5. Transakcie

Memcached nepodporuje transakcie, aj keď jeho operácie sú atómové.

Redis poskytuje okamžitú podporu transakcií na vykonávanie príkazov.

Transakciu môžeme zahájiť pomocou MULTI príkaz. Potom môžeme použiť EXEC príkaz na vykonanie nasledujúcich následných príkazov. Nakoniec Redis poskytuje SLEDOVAŤ príkaz na podmienečné vykonanie transakcie.

5.6. Publikovanie a prihlásenie na odber správ

Memcached nepodporuje publikovanie / prihlásenie na odber správ ihneď po vybalení.

Redis na druhej strane poskytuje funkcie na publikovanie a prihlásenie sa na odber správ pomocou frontov správ.

To môže byť užitočné pri navrhovaní aplikácií, ktoré vyžadujú komunikáciu v reálnom čase, ako sú chatovacie miestnosti, kanály sociálnych médií a komunikácia medzi servermi.

Redis prichádza s vyhradenými príkazmi ako ZVEREJNIŤ,PREDPLATNÉa NEPLATNÉ publikovať správu na kanáli, prihlásiť sa na odber a odhlásiť klienta na zadaných kanáloch.

5.7. Geopriestorová podpora

Geopriestorová podpora je užitočná pri implementácii funkcií našich aplikácií založených na umiestnení. Na rozdiel od Memcached prichádza Redis so špeciálnymi príkazmi na správu geopriestorových údajov v reálnom čase.

Napríklad GEODIST príkaz počíta vzdialenosť medzi dvoma geopriestorovými položkami. Rovnako tak GEORADIUS príkaz vráti všetky položky v zadanom okruhu.

Ďalej môžeme použiť Spring Data Redis na povolenie geopriestorovej podpory Redis v aplikácii Java.

5.8. Architektúra

Redis používa jedno jadro a vykazuje lepší výkon ako Memcached pri ukladaní malých súborov údajov, keď sa meria pomocou jadier.

Memcached implementuje viacvláknovú architektúru využitím viacerých jadier. Preto na ukladanie väčších súborov údajov môže mať Memcached lepší výkon ako Redis.

Ďalšou výhodou viacvláknovej architektúry Memcached je jej veľká škálovateľnosť dosiahnutá využitím viacerých výpočtových zdrojov.

Redis môže škálovať horizontálne pomocou zoskupovania, čo je pomerne zložitejšie z hľadiska nastavenia a prevádzky. Môžeme tiež použiť Jedis alebo Lettuce na povolenie klastra Redis pomocou aplikácie Java.

5.9. Skriptovanie LUA

Na rozdiel od Memcached môžeme proti Redisovi vykonávať skripty LUA. Poskytuje príkazy ako EVAL a ZATIAHNUTIE SKRIPTU, užitočné na vykonávanie skriptov LUA.

Napríklad môžeme vykonať EVAL príkaz na vyhodnotenie skriptu:

$ redis-cli eval "return redis.call ('set', KEYS [1], 'baeldung')" 1 web je v poriadku

Tu sme nastavili kľúč webovú stránku na hodnotu baeldung hodnotením scenára.

5.10. Využitie pamäte

Memcached má vyššiu mieru využitia pamäte ako Redis pri porovnávaní dátovej štruktúry String.

Napriek tomu, keď Redis používa hashovaciu štruktúru, poskytuje vyššiu mieru využitia pamäte ako Memcached.

6. Záver

V tomto článku sme preskúmali Memcached a Redis. Najskôr sme sa pozreli na podobnosti oboch databáz v pamäti. Potom sme sa pozreli na rozdiely vo funkciách poskytovaných oboma riešeniami ukladania do pamäte cache.

K dispozícii je veľa riešení ukladania do pamäte cache. Preto by sme mali zvážiť vlastnosti modulu ukladania do pamäte cache a porovnať ich s našimi prípadmi použitia.

Určite môžeme konštatovať, že Memcached je solídnou voľbou na riešenie jednoduchých problémov s ukladaním do pamäte cache. Všeobecne povedané, Redis prekonáva Memcached tým, že ponúka bohatšiu funkčnosť a rôzne funkcie, ktoré sú sľubné pre zložité prípady použitia.


$config[zx-auto] not found$config[zx-overlay] not found