Qu'est-ce que `cached` et pourquoi en avez-vous besoin ?
La bibliothèque cached est un outil puissant et flexible pour la mise en cache des résultats d'appels de fonctions en Rust. Elle permet d'accélérer considérablement l'exécution des programmes en évitant les recalculs d'opérations coûteuses (par exemple, les requêtes à une base de données, les calculs sur de grands ensembles de données, les appels à des API externes). La mise en cache est particulièrement utile dans les serveurs web, les moteurs de jeu, les systèmes d'analyse et toute application où les mêmes données sont demandées de manière répétée.
Installation
Ajoutez la dépendance à votre Cargo.toml :
[dependencies]cached = "0.48"Ensuite, exécutez cargo build — la bibliothèque est prête à être utilisée.
Fonctionnalités principales
- Mise en cache de fonctions — sauvegarde automatique du résultat d'un appel de fonction en fonction de ses arguments.
- TTL (Time To Live) — définit la durée de vie du cache, après laquelle les données sont automatiquement supprimées.
- Taille maximale du cache — limite le nombre d'entrées stockées (heuristique LRU).
- Support asynchrone — fonctionne avec les fonctions async via
cached::async. - Stockages — prise en charge intégrée de Redis, Memcached, du cache fichier et du stockage en mémoire.
Exemple de code en Rust
use cached::proc_macro::cached;use std::time::Duration;
// Mise en cache de la fonction avec un TTL de 60 secondes et un maximum de 10 entrées#[cached( time = 60, size = 10, key = "u32", convert = r#"{ _input }"#)]fn expensive_computation(input: u32) -> String { println!("Calcul pour {}", input); std::thread::sleep(Duration::from_secs(2)); format!("Résultat pour {}", input)}
fn main() { // Premier appel — calcul (2 secondes) println!("{}", expensive_computation(42)); // Deuxième appel — retour instantané depuis le cache println!("{}", expensive_computation(42));}Lors du premier appel à expensive_computation(42), la fonction s'exécute (délai de 2 secondes), et lors du second appel, le résultat est instantanément récupéré depuis le cache.
Quand l'utiliser
La bibliothèque cached est idéale pour :
- Accélérer les fonctions fréquemment appelées avec des arguments inchangés.
- Réduire la charge sur les bases de données ou les services externes.
- Implémenter la mémoïsation dans des algorithmes récursifs (par exemple, les nombres de Fibonacci).
- Créer des couches proxy de mise en cache dans les API.
Évitez la mise en cache si les données changent souvent ou si le résultat dépend d'un état externe (heure, aléatoire).
Conclusion
cached est une bibliothèque minimaliste mais puissante qui résout 90% des problèmes de mise en cache en Rust. Grâce aux macros, elle ne nécessite pas de code passe-partout et s'intègre facilement dans n'importe quel projet. Installez-la dès aujourd'hui et ressentez le gain de performance !
Aussi dans la bibliothèque
Mise en cache en TypeScript : Redis, Memcached et solutions en mémoire
Ardalis.Specification pour C# (.NET) : guide complet avec exemples
Files d'attente de tâches en C# (.NET) : System.Threading.Channels et TPL Dataflow
Moment.js / Day.js pour JavaScript (Node.js) : guide complet avec exemples