Redis

Redis on useimmille sivuston omistajille hieman tuntemattomampi toiminto, mutta parantaa huomattavasti sivuston suorituskykyä.

Tässä kirjoituksessa tutustumme tarkemmin Redikseen, sen toimintaan ja kerromme myös, miten sitä hyödynnetään Zonerin WP-Cloud-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-Cloudissa?

Zoner WP-Cloud on WordPress-julkaisujärjestelmälle optimoitu ylläpitopalvelu. Redistä hyödynnytetään WP-Cloudissa 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-Cloud-palvelussa sen saa päälle tai pois käytöstä WP-Cloud-lisäosan välimuisti-kohdasta. Lue täältä, miksi WP-Cloud on erityisen hyvä ylläpito WordPress-sivustolle.

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 kpl 10 kpl
Tietokannan kyselyaika 0,0645 s 0,0119 s

Testin tulokset verkkokauppa

Redis pois päältä Redis päällä
Tietokantapyyntöjen määrä 162 kpl 9 kpl
Tietokannan kyselyaika 0,2130 s 0,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.

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on pinterest