Kaj je Redis: Popoln vodnik po uporabi, prednostih in primerih

Zadnja posodobitev: 5 september 2025
  • Redis shranjuje podatke v pomnilniku z naprednimi strukturami in atomskimi operacijami.
  • Podpira vztrajnost (RDB/AOF), asinhrono replikacijo in orodja, kot sta Pub/Sub in Lua.
  • Idealno za predpomnjenje, seje, sporočanje in uvrstitve z zelo nizkimi zakasnitvami.

Uporaba in definicija Redisa
Če ste kdaj potrebovali, da bi vaša aplikacija delovala kot raketa, ste verjetno že slišali za Redis. Ta tehnologija deluje kot podatkovni sistem v pomnilniku, ki ponuja zelo nizke latence in skoraj takojšnji odzivi, idealno, kadar je hitrost absolutna prioriteta.

Redis ni le »predpomnilnik«, temveč tudi Baza podatkov NoSQL program s ključi in vrednostmi z več podatkovnimi strukturami in vgrajenimi orodji. Izvira iz leta 2009 in je napisan v jeziku C, njegovo ime pa izvira iz Oddaljeni strežnik slovarjevDanes ga podpira zelo aktiven ekosistem, odjemalci za skoraj vse jezike ter robustne možnosti vztrajnosti in replikacije.

Kaj je Redis in za kaj se uporablja?

Redis je mehanizem za shranjevanje v pomnilniku, ki deluje s pari ključ-vrednost in naprednimi strukturami. Pri delovanju v RAM-u, zmanjšuje tipična ozka grla pri dostopu do diska, zaradi česar je idealen za primere uporabe, kjer je potrebna izjemna hitrost: predpomnilniki z veliko poizvedbo, uporabniške seje, sporočanje v realnem času, spletne igre, nadzorne plošče za pretakanje podatkov in drugo.

V mnogih projektih se uporablja kot plast predpomnilnika pred tradicionalnimi bazami podatkov, shranjevanje ponavljajočih se rezultatov, da se izognemo nenehnemu ponovnemu izračunu ali ponovnemu poizvedovanju. Uporablja se tudi kot samostojna baza podatkov, kadar stroga trajnost ni potrebna ali je vztrajnost konfigurirana za zaščito podatkov na disku.

Njegova arhitektura odjemalec/strežnik, omrežni vmesnik in lahka zasnova omogočajo enostavno namestitev in povezovanje z več gostiteljev. Poleg tega zagotavlja asinhrono replikacijo glavne replike (glavni strežnik med podvajanjem še naprej deluje), kar pomaga pri skaliranju branja in izboljšanju razpoložljivosti.

Ključne značilnosti

Velika prednost Redisa je, da se vse shranjuje v glavnem pomnilniku. To odpravlja dostope do diska med kritično potjo in zagotavlja izjemno hitre operacije branja/pisanjaPoleg tega je lahko vsak niz velik do 512 MB, s podporo za binarne podatke, na voljo pa so tudi strukture, kot so seznami, množice, razvrščene množice, zgoščene vrednosti, HyperLogLog, bitne slike in tokovi.

Redis na teh strukturah izvaja visokonivojske atomske operacije na strani strežnika. To vam omogoča izvajanje združitev, presečišč ali razlik na množicah, spreminjanje podnizov ali Povečevanje in zmanjševanje celih števil in števil s plavajočo vejico brez rasnih pogojev.

Vključuje orodja, ki pospešijo razvoj in poenostavijo običajne vzorce: Pub / Sub objavljati in se naročati na kanale (odlično za sporočanje in obvestila v realnem času), tipke s TTL za samodejni iztek, atomski števci za metrike in nadzor sočasnosti ter vgrajeno podporo za skripte v Lui za logiko na strani strežnika od različice 2.6.

Druga pomembna prednost je združljivost z moduli. Moduli Redis razširjajo zmogljivosti, kot so JSON dokumenti, časovne vrste ali iskanje, zaradi česar je vsestranski sistem, ki daleč presega preprosto par ključ-vrednost.

  Programski inženiring danes

Funkcije Redisa

Zgodovina, licence in razvoj

Redis je leta 2009 ustanovil Salvatore Sanfilippo, da bi izboljšal latenco izdelka z imenom LLOGG. Njegov uspeh je bil takojšen in leta 2010 VMware je najel Sanfilippa, da bo projekt vodil s polnim delovnim časom.Pieter Noordhuis se je pridružil kmalu zatem. Med letoma 2013 in 2015 ga je sponzoriral Pivotal, kasneje pa Redis Labs.

Od različice 2.6 strežnik vključuje interpreter Lua, ki omogoča zagon skripte v samem Redisu z atomičnostjo in zmanjšanjem zakasnitve povratnega prenosa med odjemalcem in strežnikom. Kar zadeva licenciranje, se distribuira po modelu dvojnega licenciranja. RSALv2 in SSPLv1.

Podatkovni model in operacije

Redis vzdržuje globalni slovar, ki preslika ključe v vrednosti. Za razliko od drugih, enostavnejših rešitev ključ-vrednost so lahko vrednosti različnih tipov. Tip določa razpoložljivi ukazi in atomske operacije ki jih lahko izvajate na podlagi teh podatkov.

Tip Redis String je »binarno varen«: lahko vsebuje besedilo, cela števila, števila s plavajočo vejico ali surove binarne podatke, kot je slika JPEG ali serializiran objekt. Delujete lahko na dele niza, spreminjanje določenih bitov ali pa ga uporabite kot števec s povečanji/zmanjšanji.

Seznami omogočajo upravljanje čakalnih vrst ali skladov, množice in urejene množice se uporabljajo za članstvo in razvrščanje po rezultatu, zgoščene vrednosti pa shranjujejo zemljevide vrednosti polj, kar je zelo uporabno za združevanje atributov objektaHyperLogLog se uporablja za približne števce kardinalnosti z zelo nizkimi zahtevami po pomnilniku, tokovi pa olajšajo pretok dogodkov s porabo skupin.

Poleg tega Redis ponuja transakcije (MULTI/EXEC), ki vam omogočajo združevanje več operacij skupaj, tako da se izvajajo zaporedno in atomskoV kombinaciji z Lua lahko z garancijami zajamčete kompleksno logiko na strani strežnika.

Vztrajnost: posnetki in AOF

Redis lahko deluje izključno v pomnilniku, podpira pa tudi vztrajnost diska za uravnoteženje zmogljivosti in trajnosti. S posnetki podatkov (RDB) traja periodični zajem nabora podatkov in jih shranjuje asinhrono, zato je vpliv na odzivni čas zelo majhen.

Druga možnost je AOF (dnevnik), ki beleži vsako operacijo pisanja v datoteko. Ta način zagotavlja natančnejšo in nastavljivo vzdržljivost: appendfsync=vedno vsili sinhronizacijo ob vsaki spremembi (največja varnost, nižja zmogljivost) in appendfsync=vsako sekundo sinhronizira vsako sekundo (odlično ravnovesje).

Če je treba, lahko tudi ustreliš SAVE ročno, da se v tistem trenutku vsili posnetek. V primeru popolne okvare računalnika je običajno, da se izgubi največ majhna količina podatkov, odvisno od izbrane politike sinhronizacije.

V starejših različicah je bila uporaba »virtualnega pomnilnika« dovoljena od različice 2.4 naprej, vendar je ta pristop zastarel. Danes je priporočljivo izbirati med RDB, AOF ali njihova kombinacija, pri čemer prilagodite konfiguracijo glede na kritičnost podatkov in želeno zmogljivost.

Replikacija in visoka razpoložljivost

Redis izvaja asinhrono replikacijo med glavnim strežnikom in repliko. To pomeni, da so zapisi sprejeti na glavnem strežniku in replike so sinhronizirane brez njegovega blokiranja. ohranjanje delovanja storitve med sinhronizacijamiGlavni računalnik ima lahko več replik, replika pa je lahko nato kot glavni računalnik povezana z drugo repliko in tako tvori drevesno topologijo.

  Učinkovite strategije pri razvoju sistemov: najboljše prakse in nasveti

Replikacija je zelo uporabna za odčitavanje lestvice in za redundanco. Nekatere konfiguracije omogočajo pisanje v replike, čeprav lahko to povzroči nedoslednosti, če ni pravilno nadzorovano; privzeto se replike običajno uporabljajo samo za branje, da se ohrani doslednost.

Postavitev replik blizu uporabnikov zmanjša zaznano zakasnitev. To je mogoče doseči z orodji za orkestracijo in sistemom Sentinel/Cluster. visoka razpoložljivost in samodejni preklop na rezervno omrežje da se čim bolj zmanjša čas izpada zaradi napak glavne enote.

Arhitektura in ekosistem odjemalec/strežnik

Strežnik Redis ponuja preprost protokol, s katerim se povezujejo odjemalci različnih jezikov. Z njim lahko komunicirate. Uradni CLI (redis-cli) za testiranje, administracijo ali hitre skripte oziroma za integracijo knjižnice v vašo aplikacijo.

Na voljo so odjemalci za ActionScript, C, C++, C#, Java, Go, Python, PHP, Ruby, Scala, JavaScript (vključno s strežniškim Node.js), R, Erlang, Haskell, Lua, Objective-C, Perl, Common Lisp, Smalltalk, Tcl, Io, haXe, Pure Data in druge. Ta široka združljivost olajša uporabo v skoraj vsakem skladu.

Resnični primeri uporabe in praktični primer

Zelo pogost primer je spletna nepremičninska agencija: oglas za nepremičnino s ceno, ugodnostmi ali sobami se komajda spremeni. Brez predpomnjenja vsak obisk zahteva ponavljajoče se poizvedbe in izračune. Pri Redisu se objekt po prvem nalaganju shrani s ključem (na primer nepremičnina_4056) in TTL, recimo, en mesec. Nadaljnji obiski berejo iz spomina in izogibajte se dostopu do baze podatkov.

Prav tako je pogosto rezultati poročila o obsežnih predpomnilnikih, upravljajte overjene seje, gradite uvrstitve v živo z urejenimi nabori ali uporabite Pub/Sub kot lahek kanal za sporočanje med storitvami.

V testu s tabelo napak s 16.000 vrsticami je bil izmerjen čas za: 1) poizvedovanje po zbirki podatkov, 2) shranjevanje zbirke v Redis in 3) branje iz Redisa. Rezultati so bili osupljivi: Okrevanje iz Redisa je bilo 26-krat hitrejše kot iz baze podatkov. Te primerjave nam pogosto odprejo oči za dejanski vpliv na uporabniško izkušnjo in stroške infrastrukture.

Redis proti Memcached

Obe tehnologiji se uporabljata za predpomnjenje v pomnilniku, vendar obstajata opazne razlike. Redis ponuja več podatkovnih tipov (sezname, nabore, zgoščene vrednosti itd.), neobvezna vztrajnost diska, Pub/Sub, skripte Lua, transakcije in module za razširitev dosega. Memcached pa se osredotoča na preprost model ključ-vrednost v pomnilniku brez vztrajnosti.

Kar zadeva surovo zmogljivost, sta oba zelo hitra; Redis se običajno izkaže v scenarijih s kompleksnimi strukturami in atomskimi operacijami na strani strežnika. Če potrebujete le zelo preprost, ultralahek predpomnilnik, Memcached je morda zadosten, ko pa iščete več funkcionalnosti in prilagodljivosti, Redis pogosto zmaga.

  Popoln vodnik za naročnine na Visual Studio

Upravljane v primerjavi s samostojno upravljanimi storitvami (Redis in Valkey)

Redis ali Valkey lahko namestite sami ali pa se odločite za upravljano storitev v oblaku. Samostojno upravljanje vam daje popoln nadzor, vendar Obseg in vzdrževanje sta odvisna od vas (dodajte vozlišča, posodobitve, varnost, varnostne kopije, spremljanje).

Upravljana storitev zmanjšuje operativno breme: lažje skaliranje, visoka razpoložljivost in enostavne posodobitve. To se pogosto odraža v nižji skupni stroški in večja osredotočenost na ekipo pri modeliranju podatkov in poslovnih funkcionalnostih, ne pa pri nalogah platforme.

Integrirana orodja: Pub/Sub, TTL, števci in Lua

Z možnostjo Pub/Sub lahko oddajate sporočila na kanalih in jih takoj prejme več naročnikov, kar je idealno za klepeti, obvestila in koordinacija med mikroservisi. To je preprost in učinkovit vzorec.

Ključi TTL (Time-to-Live) vam omogočajo »samočiščenje« začasnih podatkov: sej, žetonov, rezultatov poizvedb, ki potečejo itd. To izognete se polnjenju baze podatkov z zastarelimi informacijami in poenostavite logiko poteka veljavnosti.

Atomski števci so odlični za metrike, omejevanje hitrosti, čakalne vrste ali kateri koli drug primer, kjer jih potrebujete varno seštevanje/odštevanje v sočasnih okoljih.

Končno, vgrajena podpora Lua omogoča izvajanje skriptov blizu podatkov z atomičnostjo. To zmanjša omrežne prekinitve in vam omogoča kompleksne operacije v enem samem koraku, kar izboljšuje doslednost in učinkovitost.

Pogosto zastavljena vprašanja

Za kaj se uporablja Redis? Za pospeševanje aplikacij s predpomnilniki v pomnilniku, sejami, razvrščanjem v realnem času, lahkim sporočanjem s Pub/Sub in kot NoSQL baza podatkov, kadar je latenca prednostna naloga ali je konfigurirana vztrajnost.

Zakaj je Redis tako hiter? Ker se podatki nahajajo v RAM-u, odpravlja dostope do diska na kritični poti in ponuja atomske operacije na strani strežnika; poleg tega je njegov protokol lahka in učinkovita.

Ali se ga lahko uporablja kot podatkovna baza? Da. Gre za NoSQL bazo podatkov v pomnilniku z možnostmi shranjevanja (RDB in AOF). Glede na vašo konfiguracijo lahko dati prednost zmogljivosti ali vzdržljivosti in združite oboje.

Jezikovna podpora

Obstajajo zreli odjemalci za praktično vse: Python (redis-py), Java (Jedis), Node.js (ioredis), C#/.NET (StackExchange.Redis), PHP (phpredis), Go (go-redis), Ruby (redis-rb) in številne druge. Ta raznolikost zagotavlja neposredna integracija z vašim skladom trenutno

Redis se je uveljavil kot »wild card« za reševanje problemov zmogljivosti in delovanja v realnem času v večini sodobnih arhitektur: združuje izjemno hitrost, bogate podatkovne strukture, nastavljivo vztrajnost, replikacijo in nabor praktičnih orodij, ki ob dobri uporabi ... spremenite uporabniško izkušnjo.

Vrste baz podatkov
Povezani članek:
Vrste baz podatkov: relacijske, NoSQL in druge