Redis

Joonas Vanhatapio

Redis on useimmille sivuston omistajille hieman tuntemattomampi toiminto, mutta parantaa huomattavasti sivuston WordPress-julkaisujärjestelmällä rakenetun sivuston suorituskykyä.

Tässä kirjoituksessa tutustumme tarkemmin Redikseen, sen toimintaan ja kerromme myös, miten sitä voidaan hyödyntää Zonerin WordPress-hosting eli WP.one-palvelussa. Lisäksi testasimme Rediksen vaikutusta sivuston suorituskykyyn ja nopeuteen.

Redis logo

Mikä on Redis?

Redis tulee sanoista Remote Dictionary Server. Kyseessä on avoimen lähdekoodin ohjelmisto (BSD-lisenssi), jota voidaan hyödyntää tiedon varastoimiseen, välittämiseen ja välimuistittamiseen. Sitä käyttävät esimerkiksi Twitter, Flickr ja GitHub.

Ohjelmiston ensimmäinen versio julkaistiin toukokuussa 2009 ja sen kehittäjä oli Salvatore Sanfilippo. Hän kehitti Rediksen yrittäessään parantaa italialaisen startup-yrityksensä skaalautuvuutta. Sen nykyinen pääversio Redis 5 julkaistiin lokakuussa 2018 ja se on kirjoitettu C-kielellä. Nykyään ohjelmiston kehitystä rahoittaa Redis Labs, joka on yksityinen ohjelmistoyritys.

Rediksen viralliset sivut löytyvät: https://redis.io/

Mihin Redistä käytetään?

Redis tarjoaa hyvin monipuolisia käyttömahdollisuuksia ja sitä voidaankin käyttää tietokantana, välimuistina tai viestinvälittäjänä.

Se käyttää korkealuokkaisia tietorakenteita tallentaakseen dataa. Tieto tallennetaan tietokantaan avain-arvo-pareina, esimerkiksi tallennettaessa tieto Ikä = 20, ikä on avain ja 20 on arvo.  Se tukee monia eri tietokantarakenteita, kuten merkkijonoja, tiivisteitä, luetteloita, joukkoja, bittikarttoja sekä hyperloglogeja.

NoSQL-tietokanta

Toisin kuin perinteiset relaatiotietokannat, kuten MySQL tai MariaDB, Redis ei sisällä lainkaan tauluja, rivejä, kolumneja tai funktioita. Se on siis niin kutsuttu NoSQL-tietokanta.

Redistä käytetään paljon välimuistittamiseen, erityisesti silloin, kun tarve lukea ja kirjata tietoa ylittää normaalin tietokannan kapasiteetin. Se pystyy toimimaan palvelimen nopeassa keskusmuistissa virtuaalisesti, ja tarvittaessa tallentamaan tietoja helposti myös fyysiselle kiintolevylle.

Redis toimii hyvin myös viestin välittämiseen, sillä se on tarjonnut pääversiosta 2 lähtien mahdollisuuden jakaa tietoa hyödyntämällä Julkaise/Tilaa-viestintämallia (Publish/Subscribe messaging paradigm). Ohjelmiston suorituskyky ja yksinkertaisuus erottavat sen useista muista viestinvälitysjärjestelmistä, ja siksi jotkut organisaatiot ovatkin siirtyneet käyttämään Redistä.

Joonas Vanhatapio keskustelemassa Redis-ohjelmistosta Zoner asiakaspalvelun kanssa.

Miksi Redis on suosittu?

Rediksen suosiota selittävät monet syyt. Se tarjoaa esimerkiksi korkeaa suorituskykyä ja on kehittäjäystävällinen, mutta on silti käytettävyydeltään sopivan yksinkertainen ja joustava.

Suorituskyky

Redis on parhaiten tunnettu sen suorituskykyä parantavasta vaikutuksesta. Tietokantaan kirjoittaminen ja lukeminen on todella suoraviivaista, jonka takia se voidaan tehdä todella nopeasti. Se mahdollistaa huomattavia parannuksia sivustojen suorituskykyyn.

Skaalautuvuus ja vikasietoisuus

Redis-tietokanta voi myös hyödyntää niin kutsuttua master-replica-replikointia, joka voisi olla vapaasti suomennettuna johtaja-työkone-replikointia.

Käytännössä tietokannasta voidaan luoda yksi tai useampi johtajakone, joka hajauttaa tietokannan sisällön johtajakoneiden kesken sekä monistaa datan määrittelemättömälle joukolle työkoneita. Mikäli käytössä on vikasietoinen tila, jossa on useampia johtajakoneita, voi yksittäinen johtajakone olla pois päältä vaikuttamatta tietokannan toimintaan.

Replikointi mahdollistaa myös tiedon samanaikaisen käsittelyn ja parantaa siten suorituskykyä merkittävästi. Otetaan esimerkiksi tilanne, jossa meillä on yksi johtajakone ja kaksi työkonetta. Kaikilla tietokannoilla on samat tiedot riippumatta niiden roolista.

Johtajakone voi kirjoittaa ja lukea tietokantaan
Työkone 1 voi vain lukea tietokantaa
Työkone 2 voi vain lukea tietokantaa

Esimerkinkaltaisessa tilanteessa voitaisiin samanaikaisesti lukea useamman koneen toimesta olemassa olevaa tietoa ja tallentaa uutta tietoa johtajakoneen kautta. Käytännössä samanaikaisesti voitaisiin siis suorittaa useita erillisiä tehtäviä.

Redis on kehittäjäystävällinen.

Kehittäjäystävällisyys

Redis on kehittäjäystävällinen. Sitä voidaan käyttää aina tarpeen mukaan eri tarkoituksiin, koska se toimii esimerkiksi välimuistina ja itsenäisesti toimivana tietokantana. Yksi erityispiirteistä on, että sitä voidaan käyttää myös perinteisen tietokannan rinnalla, nopeuttamaan tietokantakyselyiden käsittelyä.

Redis tukee myös todella monia ohjelmointikieliä, kuten tunnettuja Java-, Go-, Python- ja PHP-kieliä. Lisäksi sitä voidaan ohjata helposti erilaisten komentojen avulla. Kaikki komennot löydät Redis.io-sivustolta.

Miten Redistä hyödynnetään WP.one-palvelussa?

WP.one on WordPress-hosting eli kyseiselle julkaisujärjestelmälle optimoitu ylläpitopalvelu. Redistä hyödynnytetään WP.onessa objektivälimuistina, eli käytännössä tietokannan sisältöjä tallennetaan sen nopeaan välimuistiin. Tieto on siis nopeammin saatavilla Rediksen avulla.

Objektivälimuisti parantaa suorituskykyä tehokkaasti myös verkkokauppa- ja jäsenyyssivustoilla, johon muunlaiset välimuistit eivät monesti pysty. Jotkin WordPress-lisäosat ja -ulkoasuteemat eivät ole kuitenkaan yhteensopivia Rediksen kanssa, tällöin se kannattaa ottaa kokonaan pois käytöstä.

WP.one-palvelussa Rediksen saa halutessaan käyttöön lisäpalveluna. Jos haluat ottaa sen käyttöön, ota yhteyttä asiakaspalveluumme tuki@zoner.fi tai sivun alareunasta löytyvän chatin kautta.

Tutkitusti parempi suorituskyky

Testasimme Redis-objektivälimuistin vaikutusta kotisivun ja verkkokaupan suorituskykyyn. Käytimme testaamiseen wp-cloud.fi-sivustoa sekä WP-Cloud-palvelua käyttävää WooCommerce-verkkokauppaa.

Testin tulokset wp-cloud.fi

 Redis pois päältäRedis päällä
Tietokantapyyntöjen määrä58 kpl10 kpl
Tietokannan kyselyaika0,0645 s0,0119 s

Testin tulokset verkkokauppa

 Redis pois päältäRedis päällä
Tietokantapyyntöjen määrä162 kpl9 kpl
Tietokannan kyselyaika0,2130 s0,0113 s

Testituloksista nähdään, että Redis nopeuttaa merkittävästi tietokannan kyselyihin käytettyä aikaa ja sitä kautta myös koko sivuston latausaikaa. Tämä johtuu siitä, että tietokantakyselyjä tarvitsee tehdä selvästi vähemmän, kun tiedot löytyvät jo Rediksen välimuistista. Erot ovat yleensä sitä isommat, mitä isompi tietokanta on tai mitä enemmän dataa pitää hakea.