Caching in Rust: Die Bibliothek `cached`

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist `cached` und warum wird es benötigt?

Die Bibliothek cached ist ein leistungsstarkes und flexibles Werkzeug zum Caching von Funktionsergebnissen in Rust. Sie ermöglicht es, die Ausführung von Programmen erheblich zu beschleunigen, indem wiederholte Berechnungen teurer Operationen (z. B. Datenbankabfragen, Berechnungen mit großen Datenmengen, Aufrufe externer APIs) vermieden werden. Caching ist besonders nützlich in Webservern, Spiele-Engines, Analysesystemen und allen Anwendungen, bei denen dieselben Daten mehrfach abgefragt werden.

Installation

Fügen Sie die Abhängigkeit zu Ihrer Cargo.toml hinzu:

[dependencies]cached = "0.48"

Führen Sie anschließend cargo build aus – die Bibliothek ist bereit zur Verwendung.

Hauptfunktionen

  • Funktions-Caching – automatisches Speichern der Ergebnisse eines Funktionsaufrufs basierend auf seinen Argumenten.
  • TTL (Time To Live) – Festlegung der Lebensdauer des Caches, nach der die Daten automatisch gelöscht werden.
  • Maximale Cache-Größe – Begrenzung der Anzahl gespeicherter Einträge (LRU-Heuristik).
  • Asynchrone Unterstützung – Arbeit mit async-Funktionen über cached::async.
  • Speicher – integrierte Unterstützung für Redis, Memcached, Datei-Cache und In-Memory-Speicher.

Rust-Codebeispiel

use cached::proc_macro::cached;use std::time::Duration;

// Wir cachen die Funktion mit einer TTL von 60 Sekunden und maximal 10 Einträgen#[cached( time = 60, size = 10, key = "u32", convert = r#"{ _input }"#)]fn expensive_computation(input: u32) -> String { println!("Berechne für {}", input); std::thread::sleep(Duration::from_secs(2)); format!("Ergebnis für {}", input)}

fn main() { // Erster Aufruf – Berechnung (2 Sekunden) println!("{}", expensive_computation(42)); // Zweiter Aufruf – sofortige Rückgabe aus dem Cache println!("{}", expensive_computation(42));}

Beim ersten Aufruf von expensive_computation(42) wird die Funktion ausgeführt (Verzögerung von 2 Sekunden), beim zweiten Aufruf wird das Ergebnis sofort aus dem Cache geholt.

Wann verwenden

Die Bibliothek cached ist ideal für:

  • Beschleunigung häufig aufgerufener Funktionen mit unveränderten Argumenten.
  • Reduzierung der Last auf Datenbanken oder externe Dienste.
  • Implementierung von Memoization in rekursiven Algorithmen (z. B. Fibonacci-Zahlen).
  • Erstellung von Caching-Proxy-Schichten in APIs.

Vermeiden Sie Caching, wenn sich Daten häufig ändern oder das Ergebnis vom externen Zustand (Zeit, Zufall) abhängt.

Fazit

cached ist eine minimalistische, aber leistungsstarke Bibliothek, die 90 % der Caching-Aufgaben in Rust löst. Dank der Makros ist kein Boilerplate-Code erforderlich und sie lässt sich leicht in jedes Projekt integrieren. Installieren Sie sie noch heute und spüren Sie den Leistungsschub!

Empfehlungen