Unsere Java-Anwendung hatte ein Performance-Problem. Jede Anfrage traf die Datenbank, selbst bei Daten, die sich nur einmal pro Stunde änderten. Redis als Cache-Schicht reduzierte die Antwortzeit von 200 ms auf 2 ms und entlastete die Datenbank um 95 % der Abfragen.
Warum Redis, nicht Memcached¶
Redis kann mehr als Key-Value — Hashes, Listen, Sets, Sorted Sets. Dazu Persistenz (RDB, AOF), Replikation und Sentinel für HA. Mehr als ein Cache — eine legitime Datenbank für bestimmte Anwendungsfälle.
Cache für die 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 und Rate Limiting¶
Mit Spring Session ist Redis als Session Store trivial — eine Annotation. Sessions überleben einen Neustart und werden zwischen Instanzen geteilt. Redis INCR+EXPIRE für Rate Limiting: Schlüssel = IP + Minute, Limit 100 Req/Min.
Betriebstipps¶
- Setzen Sie maxmemory mit der allkeys-lru Eviction Policy
- Verwenden Sie KEYS * nicht in Produktion — nutzen Sie SCAN
- Setzen Sie TTL auf Cache-Schlüssel
- Überwachen Sie die Memory Fragmentation Ratio
Redis gehört in jeden Stack¶
Einfach zu betreiben, schnell, vielseitig. Als Cache, Session Store oder Message Broker — Redis hat einen Platz in jeder Anwendung, die Geschwindigkeit braucht.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns