Redis — predpomnjenje v pomnilniku za spletna mesta in trgovine
Redis je pomnilniška plast za stranmi, trgovinami in tržnicami, zgrajenimi na 4buildsite: v pomnilniku (RAM) hrani najpogosteje uporabljene podatke — predpomnjene strani, seje, košarice, omejitve hitrosti — tako da jih ni treba ob vsaki zahtevi brati iz zbirke podatkov. Vir resnice ostaja PostgreSQL; Redis ga razbremeni ponavljajočih se zahtev. Vključen je in upravljan s strani platforme, brez kakršne koli konfiguracije z vaše strani.
Kaj je Redis in zakaj hrani podatke v pomnilniku
Redis (REmote DIctionary Server) je odprtokodna zbirka podatkov v pomnilniku: podatke hrani v RAM-u, ne na disku. Na 4buildsite ga uporabljamo kot plast predpomnilnika pred PostgreSQL — za podatke, ki se pogosto berejo: strani, seje, košarice in omejitve hitrosti.
Branje iz RAM-a ne zahteva dostopa do diska, Redis pa doda izvorne podatkovne strukture (string, hash, seznam, množica, urejena množica, stream), ki omogočajo kompleksne operacije neposredno v pomnilniku, brez poti tja in nazaj do glavne zbirke. Obdelava ukazov poteka v eni niti (single-threaded), zato je obnašanje predvidljivo in brez tekmovalnih stanj (race conditions).
- Podatki v RAM-u, z neobvezno trajnostjo na disku (RDB/AOF)
- Izvorne strukture: hash za seje, urejena množica za lestvice in omejevanje hitrosti, stream za čakalne vrste
- Ukazi v eni niti → predvidljivo obnašanje, brez zapletenih blokad
Predpomnjenje: vaše strani in podatki, postreženi iz pomnilnika
Strategija je cache-aside: prva zahteva prebere iz PostgreSQL in rezultat shrani v Redis s TTL (časom življenja); naslednje zahteve ga vzamejo neposredno iz pomnilnika. Ko uredite stran, se ključ izrecno izbriše — nikoli ne strežemo zastarelih podatkov zaradi slepega TTL.
Za predstavitveno stran ali trgovino to pomeni, da se seznami izdelkov, meniji, priljubljene strani in odlomki vsebine berejo iz pomnilnika namesto iz zbirke podatkov. V konicah (kampanja, Black Friday) Redis vpije ponavljajoče se zahteve in tako razbremeni zbirko podatkov.
- Cache-aside z izrecno razveljavitvijo — brez zastarelih podatkov
- Shranjuje odlomke strani in rezultate poizvedb, ne le celih strani
- Razbremeni PostgreSQL ponavljajočih se poizvedb ob konicah prometa
Seje, nakupovalna košarica in zaščita pred zlorabo
Uporabniške seje in osvežilni žetoni so v Redisu: hitra avtentikacija, samodejni potek prek TTL in takojšen preklic na vseh napravah, ko se kdo odjavi ali spremeni geslo.
Nakupovalna košarica v trgovinah, zgrajenih na 4buildsite, se za neprijavljene obiskovalce hrani v Redisu — s potekom, brez napihovanja glavne zbirke. Tudi omejevanje hitrosti na kontaktnih obrazcih in pri prijavi izvaja Redis z urejenimi množicami, da ustavi spam in poskuse surove sile, preden dosežejo zbirko podatkov.
- Shramba sej s samodejnim potekom in izbirnim preklicem žetonov
- Trajna košarica s TTL za anonimne obiskovalce
- Omejevanje hitrosti in zaščita pred zlorabo na obrazcih in pri avtentikaciji
Realni čas in čakalne vrste opravil v ozadju
Redis Pub/Sub in Streams poganjata posodobitve v realnem času: zaloga, ki se zmanjšuje v živo, obvestilo v aplikaciji, status naročila, ki se spremeni — vse brez osveževanja strani obiskovalca in brez ponavljajočega se pollinga, ki utruja strežnik.
Težka opravila (obdelava slike, ustvarjanje izvoza, sinhronizacija) vstopijo v čakalno vrsto Redis, delavci v ozadju pa jih izvedejo, tako da zahteva obiskovalca ne čaka na opravilo. Mehanizem porazdeljenega zaklepanja zagotavlja, da se kritična operacija ne izvede dvakrat.
- Pub/Sub in Streams za dogodke v živo (zaloga, naročila, obvestila)
- Čakalne vrste opravil za težke obdelave, izvedene asinhrono
- Porazdeljeno zaklepanje za operacije, ki se ne smejo izvesti dvakrat
Prednosti in omejitve
Prednosti
- Predpomnjeni podatki se strežejo iz pomnilnika, brez poizvedbe v zbirko podatkov
- Razbremeni PostgreSQL ponavljajočih se poizvedb pri velikem prometu
- Izvorne strukture za seje, košarico, omejevanje hitrosti in lestvice
- Pub/Sub in Streams za funkcije v realnem času, brez pollinga
- Čakalne vrste opravil za težke obdelave, ne da bi blokirale obiskovalca
- Vključen in upravljan s strani platforme — nič konfiguracije za vas
Omejitve
- Podatki ležijo v RAM-u, ki je dražji od diska → ni primeren za ogromne količine „hladnih“ podatkov
- Je predpomnilnik / pomožna plast, ne vir resnice — trajni podatki ostanejo v PostgreSQL
- Trajnost (RDB/AOF) zmanjša, a ne odpravi povsem tveganja izgube zadnjih sekund ob sesutju
- Zahteva pravilno strategijo razveljavitve, sicer lahko streže zastarele podatke
Kratek povzetek
Redis uporabite za podatke, ki se pogosto berejo ali so kratkoživi — predpomnjenje, seje, košarico, omejevanje hitrosti, realni čas in čakalne vrste opravil. Ne uporabljajte ga kot glavnega skladišča podatkov; za to ostaja PostgreSQL. Na 4buildsite imate oboje, samodejno usklajeno: ničesar vam ni treba izbirati ali nastavljati.
Tabela specifikacij
| Zmožnost | Podrobnost | Kje se uporablja v graditelju |
|---|---|---|
| Medij shranjevanja | RAM (v pomnilniku) | Strani in podatki se berejo iz predpomnilnika namesto iz zbirke |
| Model izvajanja | Obdelava ukazov v eni niti | Števci za omejevanje hitrosti in porazdeljeno zaklepanje, brez tekmovalnih stanj |
| Podatkovne strukture | string, hash, list, set, sorted set, stream | Seje, košarica, lestvice, čakalne vrste, omejevanje hitrosti |
| Trajnost | Posnetek RDB + dnevnik AOF | Obnovitev po ponovnem zagonu |
| Potek | TTL na ključ | Košarica, seje in predpomnilnik s samodejnim čiščenjem |
| Realni čas | Pub/Sub + Streams | Zaloga v živo, obvestila, status naročila |
Redis (predpomnilnik) v primerjavi s samo zbirko podatkov
| Merilo | Z Redisom | Samo PostgreSQL |
|---|---|---|
| Branje ponavljajočih se podatkov | iz pomnilnika, brez poizvedbe v zbirko | poizvedba v zbirko ob vsaki zahtevi |
| Pri velikem prometu | ponavljajoče se poizvedbe prevzame predpomnilnik | vse poizvedbe gredo v zbirko |
| Košarica in seje | v pomnilniku, s samodejnim potekom (TTL) | tabele, ki rastejo in obremenjujejo zbirko |
| Realni čas | izvorni Pub/Sub in Streams | ponavljajoči se polling, drag |
| Čakalne vrste opravil | izvorne, preproste za uporabo | improvizirane rešitve ali jih ni |
Pogosta vprašanja
Kaj je Redis, na kratko?
Zbirka podatkov v pomnilniku (RAM), ki se uporablja kot plast predpomnilnika, sej in realnega časa pred glavno zbirko. Pogosto brani podatki se berejo iz pomnilnika namesto iz zbirke podatkov.
Zakaj ne uporabljate samo PostgreSQL?
PostgreSQL je vir resnice (trajni podatki), a Redis ponavljajoče se podatke streže iz pomnilnika in prevzame košarico, seje, omejevanje hitrosti in realni čas ter tako razbremeni zbirko pri velikem prometu. Oba delujeta skupaj.
Ali izgubim podatke, če Redis odpove?
Ne vsebine strani: trajni podatki so v PostgreSQL. V Redisu so le predpomnilnik in začasni podatki, trajnost RDB/AOF pa zmanjša izgube. Ponovni zagon Redisa ne vpliva na vašo objavljeno stran.
Ali moram Redis nastaviti sam?
Ne. Vključen je in upravljan s strani platforme 4buildsite; predpomnilnik in funkcije v realnem času dobite, ne da bi karkoli upravljali.
Kako Redis pomaga spletni trgovini?
Košarica za obiskovalce, predpomnjeni seznami izdelkov, zaloga, posodobljena v živo, in zaščita pred zlorabo pri blagajni in na obrazcih — vse brez obremenjevanja zbirke podatkov.
Ali Redis pomaga pri SEO in Core Web Vitals?
Posredno: ko podatki pridejo iz predpomnilnika, strežnik pred odgovorom ne čaka na poizvedbo v zbirko podatkov. To vpliva na TTFB (čas do prvega bajta), ki je del LCP, enega od Core Web Vitals.