¿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!
También en la biblioteca
Trabajo con XML en PHP: guía completa para analizar y crear documentos XML
Migraciones de bases de datos en Node.js: Sequelize, Knex y TypeORM
Hibernate para Java: guía completa con ejemplos
Trabajo con CSV en Java: bibliotecas OpenCSV, Apache Commons CSV y Java Scanner
gRPC para C++: bibliotecas, configuración y ejemplos de código