Cache em Rust: biblioteca `cached`

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é `cached` e para que serve?

A biblioteca cached é uma ferramenta poderosa e flexível para armazenar em cache os resultados de chamadas de funções em Rust. Ela permite acelerar significativamente a execução de programas, evitando recálculos de operações custosas (por exemplo, consultas a bancos de dados, cálculos com grandes volumes de dados, chamadas a APIs externas). O cache é especialmente útil em servidores web, motores de jogos, sistemas analíticos e qualquer aplicação onde os mesmos dados são solicitados repetidamente.

Instalação

Adicione a dependência ao seu Cargo.toml:

[dependencies]cached = "0.48"

Depois disso, execute cargo build — a biblioteca está pronta para uso.

Funcionalidades principais

  • Cache de funções — salvamento automático dos resultados da chamada de uma função com base nos seus argumentos.
  • TTL (Time To Live) — define o tempo de vida do cache, após o qual os dados são automaticamente removidos.
  • Tamanho máximo do cache — limitação da quantidade de entradas armazenadas (heurística LRU).
  • Suporte assíncrono — trabalho com funções async através de cached::async.
  • Armazenamentos — suporte integrado para Redis, Memcached, cache de arquivos e armazenamento in-memory.

Exemplo de código em Rust

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

// Armazenamos em cache a função com TTL de 60 segundos e 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() { // Primeira chamada — cálculo (2 segundos) println!("{}", expensive_computation(42)); // Segunda chamada — retorno instantâneo do cache println!("{}", expensive_computation(42));}

Na primeira chamada de expensive_computation(42), a função será executada (atraso de 2 segundos), e na chamada repetida, o resultado será obtido instantaneamente do cache.

Quando usar

A biblioteca cached é ideal para:

  • Acelerar funções chamadas com frequência com argumentos inalterados.
  • Reduzir a carga em bancos de dados ou serviços externos.
  • Implementar memoização em algoritmos recursivos (por exemplo, números de Fibonacci).
  • Criar camadas de proxy de cache em APIs.

Evite o cache se os dados mudam com frequência ou se o resultado depende de estado externo (hora, aleatoriedade).

Conclusão

cached é uma biblioteca minimalista, mas poderosa, que resolve 90% das tarefas de cache em Rust. Graças às macros, ela não requer código boilerplate e se integra facilmente em qualquer projeto. Instale-a hoje mesmo e sinta o ganho de desempenho!

Recommendations