În timp ce cache-ul în memorie (Caffeine sau ConcurrentHashMap) funcționează doar pe o singură instanță JVM, un sistem scalat orizontal cu zeci de containere necesită un cache distribuit partajat. Redis este soluția standard din industrie.
Prin starter-ul spring-boot-starter-data-redis, Spring Boot configurează automat conexiunile prin driverul non-blocant Lettuce și permite utilizarea RedisTemplate pentru structuri de date avansate (Hashes, Sets, Lists) sau ca furnizor transparent pentru @Cacheable.
Exemplu: Operațiuni rapide pe chei cu RedisTemplate
package ro.dexblog.demo.service;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.time.Duration;
@Service
public class RateLimiterService {
private final StringRedisTemplate redisTemplate;
public RateLimiterService(StringRedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
public boolean isAllowed(String clientIp) {
String key = "rate:ip:" + clientIp;
Long attempts = redisTemplate.opsForValue().increment(key);
if (attempts != null && attempts == 1) {
redisTemplate.expire(key, Duration.ofMinutes(1)); // Expirare automată 60s
}
return attempts != null && attempts <= 60; // Maxim 60 cereri / minut
}
}
Întrebări & Exemple de Cod:
Spring Data Redis și Caching DistribuitAi o nelămurire despre utilizarea comenzii
Spring Data Redis și Caching Distribuitsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.