Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Hajautusten Käytännön Soveltaminen | Välimuistin Käyttö Redisillä ja Spring Bootilla
Redisin Perusteet

bookHajautusten Käytännön Soveltaminen

Kokoamme sovelluksemme kokonaisuudessaan ja testaamme sitä käyttäen Redis- ja Spring Boot -teknologioita. Välimuistin käyttö nopeuttaa merkittävästi pyyntöjen käsittelyä ja vähentää tietokannan kuormitusta.

Lyhyt yhteenveto videosta

Ohjelmassamme käytettiin seuraavaa logiikkaa: kun käyttäjä lisätään pääasialliseen tietokantaan, hänen tietojaan ei välimuistiteta, koska se ei ole vielä tarpeellista.

@Transactional
public User createUser(User user) {
    return userRepository.save(user);
}

createUser-metodi tallentaa käyttäjän tietokantaan.

Kun pyyntö käyttäjätietojen hakemiseksi ID:n perusteella vastaanotetaan, tarkistetaan ensin, löytyykö tieto Redis-välimuistista. Tämä auttaa välttämään tarpeettomia tietokantakyselyjä, jos tiedot ovat jo välimuistissa.

@Transactional
@Cacheable(value = "user-cache", key = "#id")
@SneakyThrows
public User getUserById(Long id) {
    Thread.sleep(100);
    return userRepository.findById(id).orElseThrow(
            () -> new RuntimeException(String.format("User with this id: %d not found", id))
    );
}

Käyttämällä @Cacheable-annotaatiota välimuistiin tallennetaan data avaimella user-cache, joka sisältää id-arvon (user-cache:20 käyttäjälle, jonka ID on 20). Jos data löytyy välimuistista, se haetaan ja palautetaan. Jos dataa ei ole välimuistissa, metodi hakee sen tietokannasta.

Kun data poistetaan tietokannasta, on tärkeää poistaa se myös välimuistista tietojen yhtenäisyyden varmistamiseksi ja vanhentuneen tiedon käytön estämiseksi.

@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
    userRepository.deleteById(id);
}

deleteUser-metodi poistaa käyttäjän tietokannasta ja tyhjentää hänen tietonsa Redis-välimuistista estääkseen vanhentuneiden tietojen käytön tulevissa kyselyissä.

Välimuistin hyödyt

Nyt päästään mielenkiintoiseen osaan — miksi otimme käyttöön välimuistin? Kun Redis-välimuisti lisättiin, pyynnöt muuttuivat huomattavasti nopeammiksi — jopa 20 kertaa nopeammiksi! Tämä näkyy selvästi alla olevissa kuvakaappauksissa.

Ennen välimuistia

Ennen välimuistin käyttöönottoa jokainen pyyntö meni suoraan tietokantaan, mikä aiheutti merkittäviä viiveitä käsittelyssä.

Välimuistin jälkeen

Kun välimuisti on käytössä, suurin osa pyynnöistä käsitellään nyt Redisillä, mikä vähentää vasteaikaa merkittävästi.

Yhteenveto

Välimuistin käyttö Redisillä on mahdollistanut sovelluksen suorituskyvyn optimoinnin, pyyntöjen käsittelyn nopeuttamisen ja tietokannan kuormituksen vähentämisen. Tämä lähestymistapa on erityisen hyödyllinen suuriliikenteisissä sovelluksissa, joissa pyyntöjen käsittelyn nopeus on ratkaisevaa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain how the @Cacheable and @CacheEvict annotations work in more detail?

What are some best practices for using Redis caching in Spring Boot applications?

How can I test if my cache is working correctly in my own project?

Awesome!

Completion rate improved to 3.33

bookHajautusten Käytännön Soveltaminen

Pyyhkäise näyttääksesi valikon

Kokoamme sovelluksemme kokonaisuudessaan ja testaamme sitä käyttäen Redis- ja Spring Boot -teknologioita. Välimuistin käyttö nopeuttaa merkittävästi pyyntöjen käsittelyä ja vähentää tietokannan kuormitusta.

Lyhyt yhteenveto videosta

Ohjelmassamme käytettiin seuraavaa logiikkaa: kun käyttäjä lisätään pääasialliseen tietokantaan, hänen tietojaan ei välimuistiteta, koska se ei ole vielä tarpeellista.

@Transactional
public User createUser(User user) {
    return userRepository.save(user);
}

createUser-metodi tallentaa käyttäjän tietokantaan.

Kun pyyntö käyttäjätietojen hakemiseksi ID:n perusteella vastaanotetaan, tarkistetaan ensin, löytyykö tieto Redis-välimuistista. Tämä auttaa välttämään tarpeettomia tietokantakyselyjä, jos tiedot ovat jo välimuistissa.

@Transactional
@Cacheable(value = "user-cache", key = "#id")
@SneakyThrows
public User getUserById(Long id) {
    Thread.sleep(100);
    return userRepository.findById(id).orElseThrow(
            () -> new RuntimeException(String.format("User with this id: %d not found", id))
    );
}

Käyttämällä @Cacheable-annotaatiota välimuistiin tallennetaan data avaimella user-cache, joka sisältää id-arvon (user-cache:20 käyttäjälle, jonka ID on 20). Jos data löytyy välimuistista, se haetaan ja palautetaan. Jos dataa ei ole välimuistissa, metodi hakee sen tietokannasta.

Kun data poistetaan tietokannasta, on tärkeää poistaa se myös välimuistista tietojen yhtenäisyyden varmistamiseksi ja vanhentuneen tiedon käytön estämiseksi.

@CacheEvict(value="user-cache", key="#id")
public void deleteUser(Long id) {
    userRepository.deleteById(id);
}

deleteUser-metodi poistaa käyttäjän tietokannasta ja tyhjentää hänen tietonsa Redis-välimuistista estääkseen vanhentuneiden tietojen käytön tulevissa kyselyissä.

Välimuistin hyödyt

Nyt päästään mielenkiintoiseen osaan — miksi otimme käyttöön välimuistin? Kun Redis-välimuisti lisättiin, pyynnöt muuttuivat huomattavasti nopeammiksi — jopa 20 kertaa nopeammiksi! Tämä näkyy selvästi alla olevissa kuvakaappauksissa.

Ennen välimuistia

Ennen välimuistin käyttöönottoa jokainen pyyntö meni suoraan tietokantaan, mikä aiheutti merkittäviä viiveitä käsittelyssä.

Välimuistin jälkeen

Kun välimuisti on käytössä, suurin osa pyynnöistä käsitellään nyt Redisillä, mikä vähentää vasteaikaa merkittävästi.

Yhteenveto

Välimuistin käyttö Redisillä on mahdollistanut sovelluksen suorituskyvyn optimoinnin, pyyntöjen käsittelyn nopeuttamisen ja tietokannan kuormituksen vähentämisen. Tämä lähestymistapa on erityisen hyödyllinen suuriliikenteisissä sovelluksissa, joissa pyyntöjen käsittelyn nopeus on ratkaisevaa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 4
some-alt