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.
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ä.
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ä.
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 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.