Mi a Redis: Teljes körű útmutató a felhasználáshoz, előnyökhöz és példákhoz

Utolsó frissítés: 5 szeptember 2025
  • A Redis fejlett struktúrákkal és atomi műveletekkel tárolja az adatokat a memóriában.
  • Támogatja a perzisztenciát (RDB/AOF), az aszinkron replikációt, valamint olyan eszközöket, mint a Pub/Sub és a Lua.
  • Ideális gyorsítótárazáshoz, munkamenetekhez, üzenetküldéshez és rangsoroláshoz nagyon alacsony késleltetéssel.

A Redis felhasználása és meghatározása
Ha valaha is szükséged volt arra, hogy az alkalmazásad rakétaként fusson, valószínűleg hallottál már a Redisről. Ez a technológia egy memórián belüli adatrendszerként működik, amely a következőket kínálja: nagyon alacsony késleltetés és szinte azonnali válaszidő, ideális, ha a sebesség az abszolút prioritás.

A Redis azon túl, hogy „gyorsítótár”, egy NoSQL adatbázis kulcs-érték program több adatszerkezettel és beépített eszközökkel. 2009-ben született és C nyelven íródott, a neve onnan ered, hogy Távoli szótárszerverManapság egy nagyon aktív ökoszisztéma, szinte bármilyen nyelvhez elérhető kliensek, valamint robusztus adatmegőrzési és replikációs lehetőségek támogatják.

Mi az a Redis és mire használják?

A Redis egy memórián belüli tárolómotor, amely kulcs-érték párokkal és fejlett struktúrákkal dolgozik. RAM-ban működve csökkenti a tipikus lemezhozzáférési szűk keresztmetszeteket, így tökéletes olyan felhasználási esetekre, ahol extrém sebességre van szükség: nagy lekérdezési gyorsítótárak, felhasználói munkamenetek, valós idejű üzenetküldés, online játékok, streamelt adat-dashboardok és egyebek.

Sok projektben használják például gyorsítótár réteg a hagyományos adatbázisok előtt, ismétlődő eredményeket tárol a folyamatos újraszámítás vagy ismételt lekérdezés elkerülése érdekében. Önmagában adatbázisként is használják, ha a szigorú tartósság nem követelmény, vagy ha a megőrzés a lemezen lévő adatok védelme érdekében van konfigurálva.

Kliens/szerver architektúrájának, hálózati interfészének és pehelykönnyű kialakításának köszönhetően könnyen telepíthető és csatlakoztatható több hosztról is. Továbbá, aszinkron master-replikációs replikációt biztosít (a master továbbra is kiszolgálja a replikációt), ami segít a beolvasások skálázásában és a rendelkezésre állás javításában.

Főbb jellemzők

A Redis nagy előnye, hogy minden a főmemóriában tárolódik. Ez kiküszöböli a lemezhozzáféréseket a kritikus útvonal során, és biztosítja a következőket: rendkívül gyors olvasási/írási műveletekEzenkívül minden karakterlánc akár 512 MB is lehet, bináris adattámogatással, és olyan struktúrák is léteznek, mint a listák, halmazok, rendezett halmazok, hashek, HyperLogLog, bitképek és adatfolyamok.

A Redis magas szintű szerveroldali atomi műveleteket valósít meg ezeken a struktúrákon. Ez lehetővé teszi halmazokon végzett uniók, metszetek vagy különbségek végrehajtását, részkarakterláncok módosítását, vagy egész számok és lebegőpontos számok növelése és csökkentése versenyfeltételek nélkül.

Tartalmaz olyan eszközöket, amelyek felgyorsítják a fejlesztést és leegyszerűsítik a gyakori mintákat: Pub/Sub csatornákra feliratkozni és posztolni (remek valós idejű üzenetküldéshez és értesítésekhez), TTL-lel rendelkező kulcsok automatikus lejárat esetén, atomszámlálók metrikákhoz és párhuzamosságvezérléshez, valamint beágyazott támogatáshoz forgatókönyvek Lua nyelven szerveroldali logikához a 2.6-os verzió óta.

Egy másik hatalmas előnye a modulokkal való kompatibilitás. A Redis modulok olyan képességeket bővítenek, mint például JSON dokumentumok, idősorok vagy keresés, így egy sokoldalú rendszerré válik, amely messze túlmutat az egyszerű kulcs-érték rendszeren.

  Bootstrap 5: Definíció és konfiguráció és példa

Redis funkciók

Történelem, licencek és fejlődés

A Redist 2009-ben alapította Salvatore Sanfilippo, hogy javítsa az LLOGG nevű termék késleltetését. A cég sikere azonnali volt, és 2010-ben... A VMware felvette a Sanfilippo-t a projekt teljes munkaidős vezetésére.Pieter Noordhuis röviddel ezután csatlakozott. 2013 és 2015 között a Pivotal, majd később a Redis Labs szponzorálta.

A 2.6-os verzió óta a szerver integrál egy Lua interpretert, amely lehetővé teszi a futtatást szkriptek magában a Redisben atomisággal és a kliens-szerver oda-vissza késleltetés minimalizálásával. A licencelés tekintetében kettős módú modell szerint kerül terjesztésre. RSALv2 és SSPLv1.

Adatmodell és műveletek

A Redis egy globális szótárat tart fenn, amely a kulcsokat értékekhez rendeli. Más, egyszerűbb kulcs-érték megoldásokkal ellentétben az értékek különböző típusúak lehetnek. A típus határozza meg a elérhető parancsok és atomi műveletek amit azokon az adatokon futtathatsz.

A Redis String típus „binárisan biztonságos”: tartalmazhat szöveget, egész számokat, lebegőpontos számokat vagy nyers bináris adatokat, például JPEG képet vagy szerializált objektumot. Műveleteket végezhet rajta egy karakterlánc egyes részei, meghatározott biteket módosítanak vagy használhatod számlálóként növelésekkel/csökkentésekkel.

A listák lehetővé teszik a várólisták vagy halmok kezelését, a halmazok és rendezett halmazok a tagsághoz és a pontszám szerinti rangsoroláshoz használatosak, a hashek pedig a mező-érték megfeleltetéseket tárolják, ami nagyon hasznos a következőkhöz: egy objektum csoportattribútumaiA HyperLogLog-ot nagyon alacsony memóriaigényű, közelítő kardinalitási számlálókhoz használják, a streamek pedig csoportos felhasználású eseményfolyamokat tesznek lehetővé.

Ezenkívül a Redis tranzakciókat (MULTI/EXEC) is kínál, amelyek lehetővé teszik több művelet csoportosítását, így szekvenciálisan és atomikusan hajtódnak végreA Lua-val kombinálva garanciákkal csomagolhatja be az összetett szerveroldali logikát.

Perzisztencia: pillanatképek és AOF

A Redis képes tisztán a memóriában dolgozni, de támogatja a lemezmegőrző képességet is a teljesítmény és a tartósság egyensúlyának megteremtése érdekében. A pillanatképek (RDB) segítségével ez a következőt teszi lehetővé: az adathalmaz időszakos rögzítése és aszinkron módon menti el őket, így a válaszidőre gyakorolt ​​hatás nagyon alacsony.

A másik lehetőség az AOF (naplózás), amely minden írási műveletet naplóz egy fájlba. Ez a mód finomabb szemcséjű és konfigurálható tartósságot biztosít: appendfsync=always minden változásnál kikényszeríti a szinkronizációt (maximális biztonság, alacsonyabb teljesítmény), és appendfsync=everymp minden másodpercben szinkronizál (nagyszerű egyensúly).

Ha szükséges, lőhetsz is egyet MENTÉS kézikönyv a pillanatkép kikényszerítéséhez abban az időben. Teljes géphiba esetén a kiválasztott szinkronizációs szabályzattól függően legfeljebb kis mennyiségű adatvesztés jellemző.

A régebbi verziókban a „virtuális memória” használata a 2.4-es verziótól kezdve megengedett volt, de ez a megközelítés elavult. Manapság ajánlott a következők közül választani: RDB, AOF vagy ezek kombinációja, a konfigurációt az adatok kritikussága és a kívánt teljesítmény szerint módosítva.

Replikáció és magas rendelkezésre állás

A Redis aszinkron master-replika replikációt valósít meg. Ez azt jelenti, hogy az írások a masteren fogadódnak, és a replikák szinkronizálódnak anélkül, hogy blokkolnák azt. a szolgáltatás működőképességének fenntartása a szinkronizálások soránEgy mesternek több replikája is lehet, és egy replika mesterként láncolható egy másik replikához, fa topológiát alkotva.

  Mi az a Kubernetes: Bevezetés a Container Orchestratorba

A replikáció nagyon hasznos skálaolvasás és a redundancia érdekében. Egyes konfigurációk lehetővé teszik a replikákba való írást, bár ez nem megfelelő szabályozás esetén inkonzisztenciákhoz vezethet; alapértelmezés szerint a replikákat általában írásvédettként használják a konzisztencia fenntartása érdekében.

A replikák felhasználókhoz közeli elhelyezése csökkenti az érzékelt késleltetést. Ez orkestrációs eszközökkel és Sentinel/Clusterrel érhető el. magas rendelkezésre állás és automatikus feladatátvétel hogy minimalizálja a master meghibásodásai miatti állásidőt.

Kliens/szerver architektúra és ökoszisztéma

A Redis szerver egy egyszerű protokollt tesz elérhetővé, amelyhez a különböző nyelveken beszélő kliensek csatlakoznak. Interakcióba léphet vele Hivatalos parancssori felület (redis-cli) teszteléshez, adminisztrációhoz, gyors szkriptekhez, vagy egy könyvtár alkalmazásba integrálásához.

Vannak kliensek ActionScript, C, C++, C#, Java, Go, Python, PHP, Ruby, Scala, JavaScript (beleértve a szerveroldali Node.js-t is), R, Erlang, Haskell, Lua, Objective-C, Perl, Common Lisp, Smalltalk, Tcl, Io, haXe, Pure Data és más nyelvekhez. Ez a széleskörű kompatibilitás... szinte bármilyen veremben megkönnyíti az adaptációt.

Valós használati esetek és gyakorlati példa

Egy nagyon gyakori eset az online ingatlanügynökségeké: egy ingatlan listája az árával, felszereltségével vagy szobáival alig változik. Gyorsítótárazás nélkül minden látogatás ismétlődő lekérdezéseket és számításokat igényel. A Redis segítségével az első betöltés után az objektum egy kulccsal kerül mentésre (például ingatlan_4056) és egy hónapos TTL-lel. A későbbi látogatások memóriából kerülnek beolvasásra, és kerüld az adatbázisba való belépést.

Az is gyakori gyorsítótár nagy mennyiségű jelentés eredményei, hitelesített munkamenetek kezelése, élő rangsorok készítése rendezett készletekkel, vagy a Pub/Sub használata könnyű üzenetküldő csatorna szolgáltatások között.

Egy 16.000 1 soros hibatáblázattal végzett tesztben a következők idejét mérték: 2) az adatbázis lekérdezése, 3) a gyűjtemény Redisbe mentése és XNUMX) a Redisből való olvasás. Az eredmények meglepőek voltak: A Redisből való felépülés 26-szor gyorsabb volt mint az adatbázisból. Ezek az összehasonlítások gyakran rávilágítanak a felhasználói élményre és az infrastrukturális költségekre gyakorolt ​​valódi hatásra.

Redis vs. Memcached

Mindkét technológiát memórián belüli gyorsítótárazásra használják, de jelentős különbségek vannak közöttük. A Redis többféle adattípust kínál (listák, halmazok, hashek stb.), opcionális lemezmegőrző, Pub/Sub, Lua szkriptek, tranzakciók és modulok használatával bővíti hatókörét. A Memcached ezzel szemben egy egyszerű, memórián belüli kulcs-érték modellre összpontosít, perzisztencia nélkül.

Nyers teljesítményben mindkettő nagyon gyors; a Redis jellemzően az összetett struktúrákat és az atomi szerveroldali műveleteket igénylő forgatókönyvekben jeleskedik. Ha csak egy nagyon egyszerű, ultra-pehelykönnyű gyorsítótárra van szüksége, A Memcached elegendő lehet, de ha több funkcionalitást és rugalmasságot keresel, a Redis gyakran nyer.

  Mit csinál egy szoftverfejlesztési menedzser?

Felügyelt vs. önállóan felügyelt szolgáltatások (Redis és Valkey)

Telepítheted a Redis vagy a Valkey szoftvert önállóan, vagy választhatsz egy felügyelt felhőszolgáltatást. Az önfelügyelet teljes kontrollt biztosít, de A méretezés és a karbantartás rajtad múlik (csomópontok hozzáadása, frissítések, biztonság, biztonsági mentések, monitorozás).

Egy menedzselt szolgáltatás csökkenti a működési terheket: könnyebb skálázhatóság, magas rendelkezésre állás és problémamentes frissítések. Ez gyakran a következőket jelenti: alacsonyabb összköltség és nagyobb csapatközpontúság az adatmodellezésben és az üzleti funkciókban, nem pedig a platformfeladatokban.

Integrált eszközök: Pub/Sub, TTL, számlálók és Lua

A Pub/Sub funkcióval üzeneteket küldhetsz csatornákon, és több feliratkozó is azonnal megkaphatja azokat, ami tökéletes a következőkhöz: csevegések, értesítések és koordináció mikroszolgáltatások között. Ez egy egyszerű és hatékony minta.

Az élettartam (TTL) kulcsok lehetővé teszik az ideiglenes adatok „öntisztítását”: munkamenetek, tokenek, lejáró lekérdezési eredmények stb. Ez elkerülöd az adatbázis elavult információkkal való feltöltését és egyszerűsítse a lejárati logikát.

Az atomi számlálók nagyszerűek metrikákhoz, sebességkorlátozáshoz, sorokhoz vagy bármilyen olyan esethez, ahol szükség van rá biztonságosan összeadni/kivonni egyidejű környezetekben.

Végül, a Lua beágyazott támogatása lehetővé teszi a szkriptek adatközeli, atomikus futtatását. Ez csökkenti a hálózati utakat és egyetlen lépésben elvégezheti az összetett műveleteket, javítva a konzisztenciát és a teljesítményt.

Preguntas frecuentes

Mire használják a Redist? Alkalmazások gyorsítására memórián belüli gyorsítótárak, munkamenetek, valós idejű rangsorolás, könnyű üzenetküldés Pub/Sub használatával, valamint NoSQL adatbázisként, ha a késleltetés prioritás, vagy a perzisztencia konfigurálva van.

Miért olyan gyors a Redis? Mivel az adatok RAM-ban találhatók, kiküszöböli a kritikus útvonalon a lemezhozzáféréseket, és atomi szerveroldali műveleteket kínál; továbbá a protokollja könnyű és hatékony.

Adatbázisként használható? Igen. Ez egy memórián belüli NoSQL adatbázis, megőrző opciókkal (RDB és AOF). A konfigurációtól függően a következőket teheti: a teljesítmény vagy a tartósság előtérbe helyezése és kombináld mindkettőt.

Nyelvi támogatás

Gyakorlatilag mindenhez léteznek kiforrott kliensek: Pythonhoz (redis-py), Java-hoz (Jedis), Node.js-hez (ioredis), C#/.NET-hez (StackExchange.Redis), PHP-hez (phpredis), Go-hoz (go-redis), Ruby-hoz (redis-rb) és még sok máshoz. Ez a változatosság biztosítja a közvetlen integráció a stackeddel áram.

A Redis a legtöbb modern architektúrában a teljesítménybeli és valós idejű problémák megoldásának „jobbkártyájává” vált: ötvözi a szédületes sebességet, a gazdag adatszerkezeteket, a konfigurálható adatmegőrzést, a replikációt és egy sor praktikus eszközt, amelyek jól használva… javítsd a felhasználói élményt.

Adatbázis típusok
Kapcsolódó cikk:
Adatbázisok típusai: Relációs, NoSQL és így tovább