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 több mint egy gyorsítótár: egy kulcs-érték NoSQL adatbázis több adatstruktúrával és integrált eszközökkel. Eredetileg 2009-ben indult, C nyelven íródott, a neve a Remote Dictionary Serverből ered . Ma már nagyon aktív ökoszisztémával, szinte bármilyen programozási nyelvhez elérhető kliensekkel, valamint robusztus adatmegőrzési és replikációs képességekkel büszkélkedhet.

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 működik. A RAM-ban való működés révén csökkenti a lemezhozzáférésre jellemző szűk keresztmetszeteket , így tökéletes olyan felhasználási esetekre, ahol extrém sebességre van szükség: gyorsítótárak nagy mennyiségű lekérdezéshez, felhasználói munkamenetekhez, valós idejű üzenetküldéshez, online játékokhoz, streamelt adatokat tartalmazó irányítópultokhoz és egyebekhez.

Sok projektben gyorsítótár-rétegként használják a hagyományos adatbázisok előtt , ismétlődő eredményeket tárolva, hogy elkerüljék a folyamatos újraszámítást vagy újbóli lekérdezést. Magában adatbázisként is használják, ha a szigorú tartósság nem követelmény, vagy ha a megőrzése úgy van konfigurálva, hogy biztosítsa az adatok lemezen történő tárolását.

Kliens/szerver architektúrájának, hálózati interfészének és könnyűsúlyú kialakításának köszönhetően egyszerűen telepíthető és csatlakoztatható több hosztról. Továbbá aszinkron master-replika kapcsolatot biztosít (a master a replikáció során is működik), ami segít a skálázásban és a rendelkezésre állás javításában.

Főbb jellemzők

A Redis legnagyobb erőssége, hogy minden a főmemóriában található. Ez kiküszöböli a lemezhozzáféréseket a kritikus útvonal során, és rendkívül gyors olvasási/írási műveleteket biztosít . Továbbá minden karakterlánc elérheti az 512 MB-ot, támogatja a bináris adatokat, és olyan struktúrákat tartalmaz, mint a listák, halmazok, rendezett halmazok, hashek, HyperLogLog, bitképek és streamek.

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 differenciák végrehajtását, részkarakterláncok módosítását, illetve egész és lebegőpontos számok növelését és csökkentését versenyfeltételek nélkül.

Olyan eszközöket tartalmaz, amelyek felgyorsítják a fejlesztést és leegyszerűsítik a gyakori mintákat: Pub/Sub a csatornák közzétételéhez és feliratkozásához (ideális valós idejű üzenetküldéshez és értesítésekhez), TTL-lel rendelkező kulcsok az automatikus lejárathoz, atomi számlálók a metrikákhoz és a párhuzamosság szabályozásához, valamint beágyazott támogatás a Lua szkriptekhez a szerveroldali logikához a 2.6-os verziótól.

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

  Teljes körű útmutató a Spring Frameworkhöz: Java fejlesztés támogatása

Redis funkciók

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

A Redist 2009-ben hozta létre Salvatore Sanfilippo, hogy javítsa az LLOGG nevű termék késleltetését. A program sikere azonnali volt, és 2010-ben a VMware felbérelte 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 támogatta a projektet.

A 2.6-os verzió óta a szerver integrált egy Lua interpretert, amely lehetővé teszi a szkriptek közvetlenül a Redisen belüli, atomikus végrehajtását és minimalizálja a kliens-szerver oda-vissza késleltetést. A licencelés tekintetében kettős RSALv2 és SSPLv1 modell alatt kerül terjesztésre.

Adatmodell és műveletek

A Redis egy globális szótárat használ, amely a kulcsokat értékekhez rendeli. Az 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 az elérhető parancsokat és az adott adatokon végrehajtható atomi műveleteket .

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. A karakterlánc egyes részeivel műveleteket végezhet, módosíthat bizonyos biteket , vagy számlálóként használhatja növelő/csökkentő értékekkel.

A listák lehetővé teszik a várólisták vagy veremelemek kezelését, a halmazok és a rendezett halmazok a tagsághoz és a pontszám szerinti rangsoroláshoz használatosak, a hashek pedig a mező-érték térképeket tárolják, ami nagyon hasznos egy objektum attribútumai csoportosításához . A HyperLogLog-ot nagyon kevés memóriával rendelkező közelítő kardinalitási számlálókhoz használják, a streamek pedig csoportosított fogyasztású eseményfolyamokat tesznek lehetővé.

Továbbá a Redis tranzakciókat (MULTI/EXEC) is kínál, amelyek lehetővé teszik több művelet csoportosítását szekvenciális és atomi végrehajtáshoz . A Lua-val kombinálva megbízhatóan beágyazhatja az összetett szerveroldali logikát.

Perzisztencia: pillanatképek és AOF

A Redis képes tisztán a memóriában működni, de a teljesítmény és a tartósság egyensúlyának megteremtése érdekében támogatja a lemezmegőrző képességet is. A pillanatképek (RDB) segítségével periodikusan pillanatképeket készít az adathalmazról , és azokat aszinkron módon menti, ami minimális hatással van a válaszidőre.

A másik lehetőség az AOF (naplózás), amely minden fájlba történő írási műveletet rögzít. Ez a mód finomabb, jobban konfigurálható tartósságot biztosít: az `appendfsync=always` minden változásnál kikényszeríti a szinkronizálást (maximális biztonság, alacsonyabb teljesítmény), az `appendfsync=everysec` pedig másodpercenként szinkronizál (nagyszerű egyensúly).

Szükség esetén manuálisan is MENTHET, hogy azonnal pillanatképet készítsen. Teljes géphiba esetén jellemzően legfeljebb kis mennyiségű adat veszít, a választott szinkronizációs szabályzattól függően.

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 ma már elavult. Manapság ajánlott az RDB, az AOF vagy a kettő kombinációja közül választani , 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 a masterre írási műveleteket fogad a rendszer, és a replikák szinkronizálódnak blokkolás nélkül, így a szolgáltatás működőképes marad a szinkronizálások során . Egy masternek több replikája is lehet, és így egy replika láncba köthető egy másik replika mastereként, fa topológiát alkotva.

  Teljes körű útmutató a Visual Studio-előfizetésekhez

A replikáció nagyon hasznos az olvasási műveletek skálázásához és a redundancia biztosításához. Egyes konfigurációk lehetővé teszik a replikákba való írást, bár ez inkonzisztenciákhoz vezethet, ha nem megfelelően szabályozzák; 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ók közelében történő elhelyezése csökkenti az érzékelt késleltetést. Az orkestrációs és sentinel/klaszter eszközökkel magas rendelkezésre állás és automatikus feladatátvétel érhető el, minimalizálva az állásidőt a master meghibásodása esetén.

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

A Redis szerver egy egyszerű protokollt tesz elérhetővé, amelyhez a különböző nyelveken futó kliensek csatlakozhatnak. A hivatalos CLI-vel (redis-cli) kommunikálhatsz tesztelés, adminisztráció vagy gyors szkriptelés céljából, vagy integrálhatsz egy könyvtárat az alkalmazásodba.

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

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

Egy nagyon gyakori példa erre egy online ingatlanügynökség esete: egy ingatlanhirdetés az árával, a felszereltségével és a szobák számával alig változik. Gyorsítótárazás nélkül minden látogatás ismételt lekérdezéseket és számításokat igényel. A Redis használatával az objektum az első betöltés után egy kulccsal (például property_4056 ) és például egy hónapos TTL-lel kerül mentésre. A későbbi látogatások során a rendszer a memóriából olvassa az adatokat, és elkerüli az adatbázis elérését.

Gyakori a nagy mennyiségű jelentési eredmény gyorsítótárazása , a hitelesített munkamenetek kezelése, élő rangsorok készítése rendezett halmazokkal, vagy a Pub/Sub használata könnyű üzenetküldő csatornaként a szolgáltatások között.

Egy 16 000 soros hibatáblázatot használó tesztben a következők idejét mérték: 1) az adatbázis lekérdezése, 2) a gyűjtemény Redisbe mentése és 3) a Redisből való olvasás. Az eredmény meglepő volt: a Redisből való lekéré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ós hatásra.

Redis vs. Memcached

Mindkét technológiát memórián belüli gyorsítótárazásra használják, de vannak jelentős különbségek. A Redis többféle adattípust (listák, halmazok, hashek stb.), opcionális lemezmegőrző funkciót , Pub/Sub funkciót, Lua szkripteket, tranzakciókat és modulokat kínál a képességeinek bővítésére. A Memcached ezzel szemben egy egyszerű, memórián belüli kulcs-érték modellre összpontosít, megőrző funkció nélkül.

A nyers teljesítmény tekintetében mindkettő nagyon gyors; a Redis általában a komplex struktúrákat és az atomi szerveroldali műveleteket igénylő forgatókönyvekben jeleskedik. Ha csak egy nagyon egyszerű és ultrakönnyű gyorsítótárra van szüksége, a Memcached elegendő lehet , de ha több funkcionalitást és rugalmasságot keres, a Redis általában az első helyen áll.

  Szoftverfejlesztés ma

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

A Redis vagy a Valkey rendszert telepítheted saját kezűleg, vagy választhatsz egy felügyelt felhőszolgáltatást. Az önfelügyelet teljes kontrollt biztosít, de a skálázhatóság és a karbantartás a te felelősséged (csomópontok hozzáadása, frissítések, biztonság, biztonsági mentések, monitorozás).

Egy felügyelt 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 jellemzően alacsonyabb teljes birtoklási költséget eredményez , és lehetővé teszi a csapat számára, hogy a platformfeladatok helyett az adatmodellezésre és az üzleti funkciókra koncentráljon .

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

A Pub/Sub segítségével üzeneteket küldhetsz csatornákban, és több feliratkozó is azonnal megkaphatja azokat, ami tökéletes csevegésekhez, értesítésekhez és mikroszolgáltatások közötti koordinációhoz. Ez egy egyszerű és hatékony minta.

Az élettartam (TTL) kulcsok lehetővé teszik az ideiglenes adatok „öntisztítását”: munkamenetek, tokenek, lejárt lekérdezési eredmények stb. Ez megakadályozza, hogy elavult információkkal töltse fel az adatbázist , és leegyszerűsíti a lejárati logikát.

Az atomi számlálók csodálatosak metrikákhoz, sebességkorlátozáshoz, sorokhoz, vagy bármilyen olyan esethez, amikor biztonságosan kell összeadni/kivonni párhuzamos 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 utazást, és lehetővé teszi összetett műveletek egyetlen lépésben történő végrehajtását , 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 kritikus, vagy a perzisztencia konfigurálva van.

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

Használható adatbázisként? Igen. Ez egy memórián belüli NoSQL adatbázis, adatmegőrzési lehetőségekkel (RDB és AOF). A konfigurációtól függően prioritást adhatsz a teljesítménynek vagy a tartósságnak , vagy kombinálhatod mindkettőt.

Nyelvi támogatás

Gyakorlatilag mindenhez léteznek érett kliensek: Python (redis-py), Java (Jedis), Node.js (ioredis), C#/.NET (StackExchange.Redis), PHP (phpredis), Go (go-redis), Ruby (redis-rb) és még sok más. Ez a változatosság zökkenőmentes integrációt biztosít a meglévő stackkel.

A Redis a legtöbb modern architektúrában a teljesítménybeli és valós idejű problémák megoldásának „helyettesítő eszközévé” vált: villámgyorsaságot, gazdag adatszerkezeteket, konfigurálható adatmegőrzést, replikációt és egy sor praktikus eszközt ötvöz, amelyek jól használva különbséget tesznek a felhasználói élményben.

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