Spring Boot Redis Nedir?

Redis

Key-value şeklinde hazırlanmış bir NoSql veritabanıdır. Birçok veri yapısını destekler (string, hash, list, set vs.) ve veriyi bellekte tutar. Ayrıca veriyi diske yazabilme opsiyonu da var.

EnableCaching Cache anotasyonlarının aktif olmasını sağlar. Herhangi bir configuration sınıfınıza tanımlayabilirsiniz.

Cacheable Tanımlı olduğu methodun sonucu ilgili cache kütüphanesine kaydedilir. Method aynı değerlerle çağrılırsa çalıştırılmadan sonuç cache’ ten okunur. Method parametreleri key olarak kullanılır. İsterse bu davranış değiştirilebilir.

CachePut Cacheable anotasyonunda olduğu gibi method sonucunu cache’ e kaydeder fakat sonraki method çağırımlarında yine method çalışır.

CacheEvict Key değeri ile veriyi cache’ ten siler.

Caching Birden fazla cache anotasyonlarını gruplayarak tanımlayabilmenizi sağlar.

pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

Configuration Class:

@Configuration
@EnableCaching //cachelemek istersek bunu yazıyoruz fakat servicedeki methodun cachelenmesi içinde ayrı bir özellik eklenmeli
public class AppConfiguration {
    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("localhost", 1453);
        return new JedisConnectionFactory(redisStandaloneConfiguration);
    } //İhtiyac duyduğumuzda connection yaratıp verecek

    @Bean
    public RedisTemplate redisTemplate() {
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        return template;
        //redis üzerinde işlemler yapabilmek ve Redis template objesine de bu connenction factory i kullan diye söylüyorsun
    }

}

Redis i neden kullanılırım?

10 saniye süren bir calculation var ve aynı parametreler verilince hep aynı sonucu veriyor bunu tekrar tekrar hesaplatmak yerine cache e koyabilirsin amaç sık kullanılan maliyetli şeylerde süreci hızlandırmak

Önemli nokta cache in temizlenmesi data değiştiği zaman cacheler sıfırlanmalı yoksa eski datayı okursun bundaki amac data birikmesini önlemek değil tam olarak eski datayı tekrardan vermemek yeni gelen datayı göndermek

Redis in amacı db ye gitmemek redis ile halletmek

Mesela banka parayı cache den verse ve temizlenmese cache i para yatırdığın zaman ne olur 100 tl var hesabında 50 tl daha yatırdın cache temizlenmezse bankada hala 100 tl görürsün ama db de 150 tl vardır.

Last updated

Was this helpful?