Redis — in-memory kešošana vietnēm un veikaliem
Redis ir ātruma slānis aiz vietnēm, veikaliem un mārketpleisiem, kas veidoti platformā 4buildsite: tas atmiņā (RAM) glabā tieši tos datus, kas jāpiegādā acumirklī — kešotās lapas, sesijas, grozus, ātruma limitus. Patiesības avots paliek PostgreSQL; Redis to aizsargā pie lielas datplūsmas. Tas ir iekļauts un pārvaldīts no platformas puses, bez jebkādas konfigurēšanas no tavas puses.
Kas ir Redis un kāpēc tas ir tik ātrs
Redis (REmote DIctionary Server) ir atvērtā koda in-memory datubāze: tā glabā datus RAM, nevis diskā, tāpēc atbild mazāk nekā milisekundē. Platformā 4buildsite to izmantojam kā paātrināšanas slāni pirms PostgreSQL — visam, kas jāpiegādā acumirklī: lapām, sesijām, grozim un ātruma limitiem.
Atšķirībā no diska, RAM ir par lielumkārtām ātrāks, bet Redis pievieno natīvas datu struktūras (string, hash, saraksts, set, sorted set, stream), kas ļauj veikt sarežģītas darbības tieši atmiņā, bez ceļojuma uz galveno datubāzi un atpakaļ. Komandu apstrāde ir single-threaded, tāpēc uzvedība ir paredzama un bez race conditions.
- Tipiskais latentums zem 1 ms un vairāk nekā 100 000 darbību sekundē uz viena mezgla
- Natīvas struktūras: hash sesijām, sorted set topiem un rate limiting, stream rindām
- Single-threaded komandām → paredzama uzvedība, bez sarežģītām bloķēšanām
Kešošana: tavas lapas un dati, piegādāti no atmiņas
Stratēģija ir cache-aside: pirmais pieprasījums nolasa no PostgreSQL un saglabā rezultātu Redis ar TTL (dzīves laiku); nākamie pieprasījumi to ņem tieši no atmiņas. Kad rediģē lapu, atslēga tiek nepārprotami dzēsta, nevis paļaujoties uz aklu TTL.
Prezentācijas vietnei vai veikalam tas nozīmē, ka produktu saraksti, izvēlnes, populārās lapas un satura fragmenti tiek piegādāti no atmiņas pat pie lielas datplūsmas, neapgrūtinot datubāzi. Pīķos (kampaņa, Black Friday) Redis uzsūc atkārtotos pieprasījumus.
- Cache-aside ar nepārprotamu atcelšanu — bez novecojušiem datiem
- Atceras lapu fragmentus un vaicājumu rezultātus, ne tikai veselas lapas
- Aizsargā PostgreSQL datplūsmas pīķos, samazinot tiešos vaicājumus
Sesijas, pirkumu grozs un aizsardzība pret ļaunprātīgu izmantošanu
Lietotāju sesijas un refresh token glabājas Redis: ātra autentifikācija, automātiska derīguma beigšanās ar TTL un tūlītēja atsaukšana visās ierīcēs, kad kāds izrakstās vai nomaina paroli.
Pirkumu grozs platformā 4buildsite veidotajos veikalos neautentificētiem apmeklētājiem tiek turēts Redis — ar derīguma termiņu, neuzpūšot galveno datubāzi. Arī rate limiting kontaktu veidlapām un pieteikšanās lapai veic Redis, izmantojot sorted sets, lai apturētu surogātpastu un brutālā spēka mēģinājumus, pirms tie nonāk līdz datubāzei.
- Sesiju glabātuve ar automātisku derīguma beigšanos un selektīvu token atsaukšanu
- Pastāvīgs grozs ar TTL anonīmiem apmeklētājiem
- Rate limiting un aizsardzība pret ļaunprātīgu izmantošanu veidlapās un autentifikācijā
Reāllaiks un fona darbu rindas
Redis Pub/Sub un Streams nodrošina reāllaika atjauninājumus: krājums, kas samazinās tiešraidē, paziņojums lietotnē, pasūtījuma statuss, kas mainās — viss bez tā, ka apmeklētājam jāatsvaidzina lapa, un bez atkārtotas polling, kas nogurdina serveri.
Smagie uzdevumi (attēla apstrāde, eksporta ģenerēšana, sinhronizācija) nonāk Redis rindā, un tos fonā izpilda worker, lai apmeklētājs nebūtu jāgaida smagās apstrādes beigas. Sadalītās bloķēšanas mehānisms garantē, ka kritiska darbība netiek izpildīta divreiz.
- Pub/Sub un Streams tiešraides notikumiem (krājums, pasūtījumi, paziņojumi)
- Darbu rindas smagām apstrādēm, kas tiek izpildītas asinhroni
- Sadalītā bloķēšana darbībām, kuras nedrīkst tikt izpildītas divreiz
Priekšrocības un ierobežojumi
Priekšrocības
- Kešotie dati tiek piegādāti no atmiņas, bez vaicājuma uz galveno datubāzi
- Samazina PostgreSQL slodzi pie lielas datplūsmas
- Natīvas struktūras sesijām, grozam, rate limiting un topiem
- Pub/Sub un Streams reāllaika funkcijām, bez polling
- Darbu rindas smagām apstrādēm, nebloķējot apmeklētāju
- Iekļauts un pārvaldīts no platformas puses — nulle konfigurēšanas tev
Ierobežojumi
- Dati glabājas RAM, kas ir dārgāka par disku → nav paredzēts milzīgiem „auksto” datu apjomiem
- Tas ir kešatmiņa / palīgslānis, nevis patiesības avots — pastāvīgie dati paliek PostgreSQL
- Noturība (RDB/AOF) samazina, bet pilnībā neizslēdz risku zaudēt pēdējās sekundes avārijas gadījumā
- Nepieciešama pareiza atcelšanas stratēģija, citādi var apkalpot novecojušus datus
Īss secinājums
Izmanto Redis visam, kam jābūt acumirklīgam — kešošanai, sesijām, grozam, rate limiting, reāllaikam un darbu rindām. Neizmanto to kā galveno datu glabātuvi; tam paliek PostgreSQL. Platformā 4buildsite tev ir abi, automātiski saskaņoti: nekas nav jāizvēlas vai jākonfigurē.
Specifikāciju tabula
| Iespēja | Detaļas | Kur izmanto builder |
|---|---|---|
| Latentums | < 1 ms (in-memory) | Lapas un dati tiek piegādāti no atmiņas |
| Caurlaidība | > 100 000 darbību/s uz mezglu | Liela datplūsma ar mazāku slodzi uz datubāzi |
| Datu struktūras | string, hash, list, set, sorted set, stream | Sesijas, grozs, topi, rindas, rate limiting |
| Noturība | RDB snapshot + AOF žurnāls | Atjaunošana pēc restarta |
| Derīguma beigšanās | TTL katrai atslēgai | Grozs, sesijas un kešatmiņa ar automātisku tīrīšanu |
| Reāllaiks | Pub/Sub + Streams | Tiešraides krājums, paziņojumi, pasūtījuma statuss |
Redis (kešatmiņa) pret tikai datubāzi
| Kritērijs | Ar Redis | Tikai PostgreSQL |
|---|---|---|
| Atbildes laiks atkārtotiem datiem | no atmiņas, bez vaicājuma datubāzē | vaicājums katram pieprasījumam |
| Pie lielas datplūsmas | datubāze aizsargāta, viegli mērogojas | datubāze pārslogojas, risks uz timeout |
| Grozs un sesijas | ātras, ar automātisku derīguma beigšanos | tabulas, kas aug un noslogo datubāzi |
| Reāllaiks | natīvs Pub/Sub un Streams | atkārtots polling, dārgs |
| Darbu rindas | natīvas, vienkāršas lietošanā | improvizēti risinājumi vai to nav vispār |
Biežāk uzdotie jautājumi
Kas īsumā ir Redis?
Īpaši ātra in-memory datubāze, ko izmanto kā kešatmiņas, sesiju un reāllaika slāni pirms galvenās datubāzes. Tā glabā datus RAM un ļauj vietnei piegādāt tos no atmiņas.
Kāpēc neizmantojat tikai PostgreSQL?
PostgreSQL ir patiesības avots (noturīgi dati), taču Redis atkārtotos datus piegādā no atmiņas un pārņem grozu, sesijas, rate limiting un reāllaiku, aizsargājot datubāzi pie lielas datplūsmas. Abi strādā kopā.
Vai zaudēšu datus, ja Redis nokrīt?
Ne vietnes saturu: pastāvīgie dati ir PostgreSQL. Redis glabājas tikai kešatmiņa un pagaidu dati, bet RDB/AOF noturība samazina zaudējumus. Redis restarts neietekmē tavu publicēto vietni.
Vai man pašam jākonfigurē Redis?
Nē. Tas ir iekļauts un pārvaldīts no platformas 4buildsite puses; tu izbaudi ātrumu un reāllaika funkcijas, neko neadministrējot.
Kā Redis palīdz tiešsaistes veikalam?
Grozs apmeklētājiem, kešoti produktu saraksti, tiešraidē atjaunināts krājums un aizsardzība pret ļaunprātīgu izmantošanu pie norēķiniem un veidlapās — viss, neapgrūtinot datubāzi.
Vai Redis palīdz SEO un Core Web Vitals?
Jā, netieši: īsi atbildes laiki ietekmē TTFB — vienu no Core Web Vitals rādītājiem — un lietotāja pieredzi.