缓存

Loco 提供了一个缓存层,通过存储频繁访问的数据来提升应用性能。

默认行为

默认情况下,Loco 初始化一个 Null 缓存驱动(driver)。这意味着任何与缓存的交互都会返回一个错误,从而有效地绕过缓存功能。

启用缓存

要启用缓存并配置特定的缓存驱动,你可以将默认的 Null 驱动替换为你偏好的实现。

在你的 app.rs 文件中,定义一个名为 after_context 的函数作为 app.rs 文件中的 Hook,并从 loco_rs 导入 cache 模块。

这是一个使用内存缓存驱动(in-memory cache driver)的示例:

use loco_rs::cache;

async fn after_context(ctx: AppContext) -> Result<AppContext> {
    Ok(AppContext {
        cache: cache::Cache::new(cache::drivers::inmem::new()).into(),
        ..ctx
    })
}

缓存条目

所有条目都作为 &str 值和键被缓存。

use std::time::Duration;
use loco_rs::cache;

async fn test_cache(ctx: AppContext) {

    // 将一个条目插入缓存
    ctx.cache.insert("key", "value").await;

    // 将一个带有过期时间的条目插入缓存,过期时间为 Duration
    ctx.cache.insert_with_expiry("key", "value", Duration::from_secs(300)).await;

    // 从缓存中检索一个条目
    let value = ctx.cache.get("key").await.unwrap();
}

查看 Cache API 文档以获取更多示例。