Naše Java aplikace měla problém s výkonem. Každý požadavek sahal do databáze, i když data se měnila jednou za hodinu. Redis jako cache vrstva snížil odezvu z 200ms na 2ms a odlehčil databázi o 95 % dotazů.
Proč Redis, ne Memcached¶
Redis umí víc než key-value — hashe, listy, sety, sorted sety. Navíc persistence (RDB, AOF), replication a Sentinel pro HA. Víc než cache — legitimní databáze pro specifické use cases.
Cache pro REST API¶
public List<Product> getProducts() {
String cached = jedis.get("products:all");
if (cached != null) {
return objectMapper.readValue(cached, productListType);
}
List<Product> products = productRepository.findAll();
jedis.setex("products:all", 3600, objectMapper.writeValueAsString(products));
return products;
}
Session store a rate limiting¶
S Spring Session je Redis session store triviální — jedna anotace. Sessions přežijí restart a jsou sdílené mezi instancemi. Redis INCR+EXPIRE pro rate limiting: klíč = IP + minuta, limit 100 req/min.
Provozní tipy¶
- Nastavte maxmemory s allkeys-lru eviction policy
- Nepoužívejte KEYS * v produkci — použijte SCAN
- Nastavte TTL na cache klíče
- Sledujte memory fragmentation ratio
Redis patří do každého stacku¶
Jednoduchý na provoz, rychlý, univerzální. Jako cache, session store, message broker — Redis má místo v každé aplikaci, která potřebuje rychlost.