Caché en Rust: biblioteca `cached`

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es `cached` y para qué sirve?

La biblioteca cached es una herramienta potente y flexible para almacenar en caché los resultados de llamadas a funciones en Rust. Permite acelerar significativamente la ejecución de programas, evitando recálculos de operaciones costosas (por ejemplo, consultas a bases de datos, cálculos con grandes volúmenes de datos, llamadas a APIs externas). El almacenamiento en caché es especialmente útil en servidores web, motores de juegos, sistemas analíticos y cualquier aplicación donde los mismos datos se soliciten repetidamente.

Instalación

Agregue la dependencia a su Cargo.toml:

[dependencies]cached = "0.48"

Después de esto, ejecute cargo build — la biblioteca está lista para usar.

Funciones principales

  • Almacenamiento en caché de funciones — guardado automático de los resultados de una llamada a función basándose en sus argumentos.
  • TTL (Time To Live) — se define el tiempo de vida del caché, después del cual los datos se eliminan automáticamente.
  • Tamaño máximo del caché — límite en la cantidad de entradas almacenadas (heurística LRU).
  • Soporte asíncrono — trabajo con funciones async a través de cached::async.
  • Almacenes — soporte integrado para Redis, Memcached, caché de archivos y almacenamiento en memoria.

Ejemplo de código en Rust

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

// Almacenamos en caché la función con un TTL de 60 segundos y un máximo de 10 entradas#[cached( time = 60, size = 10, key = "u32", convert = r#"{ _input }"#)]fn expensive_computation(input: u32) -> String { println!("Calculando para {}", input); std::thread::sleep(Duration::from_secs(2)); format!("Resultado para {}", input)}

fn main() { // Primera llamada — cálculo (2 segundos) println!("{}", expensive_computation(42)); // Segunda llamada — retorno instantáneo desde el caché println!("{}", expensive_computation(42));}

En la primera llamada a expensive_computation(42) la función se ejecutará (retardo de 2 segundos), mientras que en la segunda, el resultado se obtendrá del caché instantáneamente.

Cuándo usarlo

La biblioteca cached es ideal para:

  • Acelerar funciones llamadas con frecuencia con argumentos inmutables.
  • Reducir la carga en bases de datos o servicios externos.
  • Implementar memoización en algoritmos recursivos (por ejemplo, números de Fibonacci).
  • Crear capas proxy de almacenamiento en caché en APIs.

Evite el almacenamiento en caché si los datos cambian con frecuencia o el resultado depende del estado externo (hora, aleatoriedad).

Conclusión

cached es una biblioteca minimalista pero potente que resuelve el 90% de las tareas de almacenamiento en caché en Rust. Gracias a las macros, no requiere código boilerplate y se integra fácilmente en cualquier proyecto. ¡Instálela hoy y sienta el aumento de rendimiento!

Recommendations