Redis — muistissa toimiva välimuisti sivustoille ja verkkokaupoille
Redis on nopeuskerros 4buildsitella rakennettujen sivustojen, verkkokauppojen ja markkinapaikkojen takana: se pitää muistissa (RAM) täsmälleen ne tiedot, jotka on tarjoiltava välittömästi — välimuistitetut sivut, istunnot, ostoskorit, nopeusrajat — ja vastaa alle millisekunnissa. Totuuden lähde on edelleen PostgreSQL; Redis suojaa sitä suurella liikenteellä. Se sisältyy ja alusta hallinnoi sitä, ilman että sinun tarvitsee konfiguroida mitään.
Mikä Redis on ja miksi se on niin nopea
Redis (REmote DIctionary Server) on avoimen lähdekoodin muistissa toimiva tietokanta: se pitää datan RAM-muistissa, ei levyllä, joten se vastaa alle millisekunnissa. 4buildsitessa käytämme sitä kiihdytyskerroksena PostgreSQL:n edessä — kaikelle, mikä on tarjoiltava välittömästi: sivuille, istunnoille, ostoskoreille ja nopeusrajoille.
Levyyn verrattuna RAM on suuruusluokkia nopeampi, ja Redis lisää natiivit tietorakenteet (string, hash, lista, set, sorted set, stream), jotka mahdollistavat monimutkaiset operaatiot suoraan muistissa, ilman edestakaista matkaa pääkantaan. Komentojen käsittely on yksisäikeistä (single-threaded), joten käyttäytyminen on ennustettavaa ja ilman race conditioneja.
- Tyypillinen viive alle 1 ms ja yli 100 000 operaatiota sekunnissa yhdellä solmulla
- Natiivit rakenteet: hashit istunnoille, sorted set -rakenteet tilastolistoille ja rate limitingille, streamit jonoille
- Yksisäikeinen komentojen osalta → ennustettava käyttäytyminen, ei monimutkaisia lukkiutumia
Välimuisti: sivusi ja datasi tarjoiltuna muistista
Strategia on cache-aside: ensimmäinen pyyntö lukee PostgreSQL:stä ja tallentaa tuloksen Redisiin TTL:llä (elinaika); seuraavat pyynnöt noudetaan suoraan muistista. Kun muokkaat sivua, avain poistetaan eksplisiittisesti — emme koskaan tarjoile vanhentunutta dataa sokean TTL:n kautta.
Esittelysivustolle tai verkkokaupalle tämä tarkoittaa, että tuotelistat, valikot, suositut sivut ja sisältöfragmentit toimitetaan muistista, jolloin tietokantaa kuormitetaan vähemmän. Piikeissä (kampanja, Black Friday) Redis absorboi toistuvat pyynnöt.
- Cache-aside eksplisiittisellä mitätöinnillä — ei vanhentunutta dataa
- Muistaa sivufragmentteja ja kyselyiden tuloksia, ei vain kokonaisia sivuja
- Suojaa PostgreSQL:ää liikennepiikeissä ja vähentää sen kuormaa
Istunnot, ostoskori ja väärinkäytösten esto
Käyttäjäistunnot ja refresh-tokenit ovat Redisissä: nopea todennus, automaattinen vanheneminen TTL:llä ja välitön mitätöinti kaikilla laitteilla, kun joku kirjautuu ulos tai vaihtaa salasanan.
4buildsitella rakennettujen verkkokauppojen ostoskori säilytetään Redisissä kirjautumattomille kävijöille — vanhenemisella, paisuttamatta pääkantaa. Myös rate limiting yhteydenottolomakkeilla ja kirjautumisessa toteutetaan Redisillä sorted set -rakenteita käyttäen, jotta roskaposti ja brute force -yritykset pysäytetään ennen kuin ne ehtivät tietokantaan.
- Istuntovarasto automaattisella vanhenemisella ja tokenien valikoivalla mitätöinnillä
- Pysyvä ostoskori TTL:llä anonyymeille kävijöille
- Rate limiting ja väärinkäytösten esto lomakkeilla ja todennuksessa
Reaaliaika ja taustatyöjonot
Redis Pub/Sub ja Streams ruokkivat reaaliaikaisia päivityksiä: varastosaldo, joka pienenee livenä, sovelluksen ilmoitus, tilauksen tila, joka muuttuu — kaikki ilman että kävijän tarvitsee päivittää sivua ja ilman toistuvaa pollingia, joka rasittaa palvelinta.
Raskaat tehtävät (kuvan käsittely, viennin generointi, synkronointi) menevät Redis-jonoon, ja taustalla työskentelevät workerit ajavat ne erillään kävijän pyynnöstä. Hajautettu lukitusmekanismi (distributed locking) takaa, ettei kriittistä operaatiota ajeta kahdesti.
- Pub/Sub ja Streams live-tapahtumille (varasto, tilaukset, ilmoitukset)
- Työjonot raskaille, asynkronisesti ajettaville käsittelyille
- Hajautettu lukitus operaatioille, joita ei saa ajaa kahdesti
Edut ja rajoitukset
Edut
- Vaste alle 1 ms: välimuistitettu data tarjoillaan muistista
- Vähentää PostgreSQL:n kuormaa suurella liikenteellä
- Natiivit rakenteet istunnoille, ostoskorille, rate limitingille ja tilastolistoille
- Pub/Sub ja Streams reaaliaikaisiin toimintoihin ilman pollingia
- Työjonot raskaille käsittelyille estämättä kävijää
- Sisältyy ja alusta hallinnoi sitä — ei konfigurointia sinulle
Rajoitukset
- Data on RAM-muistissa, joka on levyä kalliimpaa → ei sovellu valtaviin ”kylmän” datan määriin
- Se on välimuisti / apukerros, ei totuuden lähde — pysyvä data pysyy PostgreSQL:ssä
- Pysyvyys (RDB/AOF) vähentää, mutta ei poista kokonaan riskiä menettää viimeiset sekunnit kaatumisessa
- Vaatii oikean mitätöintistrategian, muuten se voi tarjoilla vanhentunutta dataa
Lyhyt yhteenveto
Käytä Redisiä kaikkeen, minkä on oltava välitöntä — välimuisti, istunnot, ostoskori, rate limiting, reaaliaika ja työjonot. Älä käytä sitä pääasiallisena datavarastona; siihen PostgreSQL pysyy. 4buildsitessa sinulla on molemmat, automaattisesti sovitettuina: sinun ei tarvitse valita tai konfiguroida mitään.
Tekniset tiedot
| Ominaisuus | Tiedot | Missä käytetään builderissa |
|---|---|---|
| Viive | < 1 ms (muistissa) | Sivut ja data tarjoillaan muistista |
| Läpimeno | > 100 000 ops/s solmua kohden | Suuri liikenne, vähemmän kuormaa tietokantaan |
| Tietorakenteet | string, hash, list, set, sorted set, stream | Istunnot, ostoskori, tilastolistat, jonot, rate limiting |
| Pysyvyys | RDB-snapshot + AOF-loki | Palautuminen uudelleenkäynnistyksen jälkeen |
| Vanheneminen | TTL avainta kohden | Ostoskori, istunnot ja välimuisti automaattisella siivouksella |
| Reaaliaika | Pub/Sub + Streams | Varasto livenä, ilmoitukset, tilauksen tila |
Redis (välimuisti) vs. pelkkä tietokanta
| Kriteeri | Redisin kanssa | Vain PostgreSQL |
|---|---|---|
| Vasteaika toistuvalle datalle | alle 1 ms, muistista | kymmeniä ms, kysely jokaisella pyynnöllä |
| Suurella liikenteellä | kanta suojattu, skaalautuu helposti | kanta ruuhkautuu, aikakatkaisujen riski |
| Ostoskori ja istunnot | nopeat, automaattisella vanhenemisella | taulut, jotka kasvavat ja kuormittavat kantaa |
| Reaaliaika | natiivit Pub/Sub ja Streams | toistuva polling, kallis |
| Työjonot | natiivit, helppokäyttöiset | improvisoidut ratkaisut tai ei lainkaan |
Usein kysytyt kysymykset
Mikä Redis on lyhyesti?
Erittäin nopea muistissa toimiva tietokanta, jota käytetään välimuistina, istuntoina ja reaaliaikana pääkannan edessä. Se vastaa alle millisekunnissa.
Miksi ette käytä vain PostgreSQL:ää?
PostgreSQL on totuuden lähde (kestävä data), mutta Redis tarjoilee toistuvan datan alle millisekunnissa ja hoitaa ostoskorin, istunnot, rate limitingin ja reaaliajan suojaten kantaa suurella liikenteellä. Nämä kaksi toimivat yhdessä.
Menetänkö dataa, jos Redis kaatuu?
Et sivustosi sisältöä: pysyvä data on PostgreSQL:ssä. Redisissä on vain välimuistia ja väliaikaista dataa, ja RDB/AOF-pysyvyys vähentää menetyksiä. Redisin uudelleenkäynnistys ei vaikuta julkaistuun sivustoosi.
Pitääkö minun konfiguroida Redis?
Ei. Se sisältyy ja 4buildsite-alusta hallinnoi sitä; sinä hyödyt nopeudesta ja reaaliaikaisista toiminnoista ylläpitämättä mitään.
Miten Redis auttaa verkkokauppaa?
Ostoskori kävijöille, välimuistitetut tuotelistat, varasto päivittyen livenä ja väärinkäytösten esto kassalla ja lomakkeilla — kaikki kuormittamatta tietokantaa.
Auttaako Redis SEO:ssa ja Core Web Vitalsissa?
Kyllä, epäsuorasti: lyhyet vasteajat parantavat TTFB:tä ja Core Web Vitalsia, signaaleja, joilla on merkitystä sekä Googlelle että käyttäjäkokemukselle.