Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring Boot ile Redis Önbellekleme

Spring Boot ile Redis Önbellekleme

İlk yayın22 Aralık 2024
Son güncelleme23 Aralık 2024
Okuma süresi3 dk okuma
JavaKotlinSpring BootRedisÖnbellekleme
XLinkedInFacebook
Spring Boot ile Redis Önbellekleme

Beğeni yükleniyor...

Redis, genellikle önbellekleme, mesajlaşma ve gerçek zamanlı veri yönetimi için kullanılan güçlü bir bellek içi veri deposudur. Bu kılavuz, Redis'i hem Java hem de Kotlin kullanarak bir Spring Boot uygulamasına nasıl entegre edeceğinizi açıklar.


Son güncelleme23 Aralık 2024

Toplam görüntülenmeGörüntülenme yükleniyor...

Önceki makaleSpring Boot ile OpenAPISonraki makaleSpring Boot ile Kafka Entegrasyonu
Şuayb Şimşek

Yazan

Şuayb Şimşek

Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.

Uzmanlık

  • Spring Boot
  • Go
  • Mikroservis
  • Next.js
  • Cloud Native

Bağlantılar

GitHubLinkedInMedium

Benzer yazılar

Spring Boot Configuration Properties
Programlama

Spring Boot Configuration Properties

@ConfigurationProperties ile tip-güvenli yapılandırma tanımlamayı, @Validated ile ayarları doğrulamayı ve profile-specific application-{profile}.yml dosyalarıyla ortama göre değer yönetimini öğrenin.

4 Şubat 20263 dk okuma
JavaKotlinSpring BootYapılandırma
Spring Boot GraphQL JWE Kimlik Doğrulama
Programlama

Spring Boot GraphQL JWE Kimlik Doğrulama

Stateless şifreli JWT’ler (JWE) ile Spring Boot GraphQL API’lerinizi güvenli hale getirmeyi; kullanıcı kimliği ve rolleri JPA ile bir veritabanında saklamayı öğrenin.

17 Mayıs 20256 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEGraphQL
Spring Boot JPA ile JWE Kimlik Doğrulaması
Programlama

Spring Boot JPA ile JWE Kimlik Doğrulaması

Stateless şifreli JWT’ler (JWE) kullanarak Spring Boot API’lerinizi güvenli hale getirirken, kullanıcı kimliklerini ve rolleri JPA destekli bir veritabanında nasıl saklayacağınızı öğrenin.

11 Mayıs 20254 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEJPA

Hakkımda

Spring Boot, mikroservis, güvenlik ve daha fazlası hakkında yazılar.

İletişimYeni başladıysan

Son yazılar

  • Captain Tsubasa 2: World Fighters
  • Captain Tsubasa: Rise of New Champions
  • Spring Boot Configuration Properties
  • Spring Boot GraphQL JWE Kimlik Doğrulama
  • Spring Boot JPA ile JWE Kimlik Doğrulaması

Popüler konular

JavaKotlinSpring BootGüvenlikJWEJWT

Abone ol

Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.

Sosyal

© 2024-2026 Şuayb'in Blogu. Tüm hakları saklıdır.

🌟 Neden Redis Kullanmalıyız?

Bu bölümde Neden Redis Kullanmalıyız? konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • Yüksek Performans: Redis, okuma ve yazma işlemleri için son derece düşük gecikme süreleri sağlar.
  • Esnek Veri Yapıları: String, hash, liste, set ve daha fazlasını destekler.
  • Ölçüklenebilirlik: Dağıtık önbellekleme ve gerçek zamanlı analitik için idealdir.
  • Kolay Entegrasyon: Spring Boot ile kolayca entegre edilebilir.

📋 Gereksinimler

👈 Aşağıdakilere sahip olduğunuzdan emin olun:

  • ☕ Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle yüklenmiş
  • 🄤 Bir Java IDE (IntelliJ IDEA, Eclipse gibi)
  • 🔠 Redis Sunucusu, lokal olarak yüklenmiş veya ağa erişilebilir

🛠️ Adım 1: Bağımlılıkları Ekleyin

Redis'i Spring Boot projenize entegre etmek için aşağıdaki bağımlıkları ekleyin:

  • Maven:
XMLpom.xml
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • Gradle:
GROOVYbuild.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

🛠️ Adım 2: Redis'i Yapılandırın

Redis bağlantısını application.properties veya application.yml dosyanızda yapılandırın.

Örnek Yapılandırma:

Aşağıdaki örnek, Örnek Yapılandırma için pratik bir bağlam sunar ve doğrudan uygulanabilir.

PROPERTIESapplication.properties
spring.redis.host=localhost
spring.redis.port=6379

Parola doğrulama veya SSL gibi ileri düzey kurulumlar için şunları ekleyin:

PROPERTIESapplication.properties
spring.redis.password=sifre
spring.redis.ssl=true

🛠️ Adım 3: Önbelleği Etkinleştirin

Ana uygulama sınıfınıza @EnableCaching ekleyin:


Servis Katmanında Önbellekleme Örneği

Aşağıdaki örnek, Servis Katmanında Önbellekleme Örneği için pratik bir bağlam sunar ve doğrudan uygulanabilir.


Önbellek Zaman Aşımı (TTL) Yapılandırması

application.properties dosyasında önbellek sona erme sürelerini ayarlayın:

PROPERTIESapplication.properties
spring.cache.redis.time-to-live=600000

Bu, zaman aşımını 10 dakika (600.000 milisaniye) olarak ayarlar.


Controller Örneği

Önbellekleme işlevini expose etmek için bir REST Controller oluşturun.


▶️ Uygulamayı Çalıştırma

Uygulamayı aşağıdaki komutla çalıştırın:

BASH
./mvnw spring-boot:run

🧪 API’yı Test Etme

API’yı cURL veya Postman kullanarak test edebilirsiniz:

  • Bir Kullanıcıyı Getir (önbellekli):
BASH
curl -X GET http://localhost:8080/users/1

🏁 Sonuç

Artık Redis Önbellekleme için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.

JAVARedisApplication.java
package com.example.redis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class RedisApplication {
  public static void main(String[] args) {
    SpringApplication.run(RedisApplication.class, args);
  }
}
KOTLINRedisApplication.kt
package com.example.redis

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.cache.annotation.EnableCaching

@SpringBootApplication
@EnableCaching
class RedisApplication

fun main(args: Array<String>) {
  runApplication<RedisApplication>(*args)
}
JAVAUserService.java
package com.example.redis.service;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class UserService {

  @Cacheable("users")
  public String getUserById(String id) {
    simulateSlowService();
    return "User with ID: " + id;
  }

  private void simulateSlowService() {
    try {
      Thread.sleep(3000L);
    } catch (InterruptedException e) {
      throw new IllegalStateException(e);
    }
  }
}
KOTLINUserService.kt
package com.example.redis.service

import org.springframework.cache.annotation.Cacheable
import org.springframework.stereotype.Service

@Service
class UserService {

  @Cacheable("users")
  fun getUserById(id: String): String {
    simulateSlowService()
    return "User with ID: $id"
  }

  private fun simulateSlowService() {
    Thread.sleep(3000L)
  }
}
JAVAUserController.java
package com.example.redis.controller;

import com.example.redis.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class UserController {

  private final UserService userService;

  @GetMapping("/{id}")
  public String getUser(@PathVariable String id) {
    return userService.getUserById(id);
  }
}
KOTLINUserController.kt
package com.example.redis.controller

import com.example.redis.service.UserService
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/users")
class UserController(
  private val userService: UserService
) {
  @GetMapping("/{id}")
  fun getUser(@PathVariable id: String): String = userService.getUserById(id)
}