#cache #remember #flush #forget #remember-forever

已撤销 cache_remember

受到 Laravel 的 cache remember forever 启发的缓存库

0.1.4 2023年6月17日
0.1.3 2023年6月11日
0.1.2 2023年6月11日
0.1.1 2023年6月11日
0.1.0 2023年6月11日

#6 in #forget

每月下载 28次

MIT 协议

14KB
215 代码行

CACHE REMEMBER: README.md

已废弃库通知

⚠️ 注意:此库已废弃!⚠️

这是友好提醒,您目前正在使用的库已被标记为废弃。我们强烈建议过渡到 cacheapp 的稳定版本。您可以在 https://github.com/JoelTorresAr/cacheapp.git 找到稳定版本。

重要的是要更新依赖项以确保兼容性、安全性和访问最新功能。通过迁移到稳定的 cacheapp 版本,您将受益于更可靠和经过良好维护的解决方案。

请注意,废弃的库可能仍然暂时可用,但它将不再接收更新或支持。尽快切换到废弃库以避免未来可能出现的问题,这对您最有利。

感谢您理解并合作保持您的代码库更新。如果您在迁移过程中有任何问题或需要帮助,请随时联系 cacheapp 社区或库的维护者。

cacheapp 开发愉快! 🚀

最好的祝愿,

[Joel Torres]"

资源 链接
包版本 Crates.io
文档 Cargo 文档

[0.1.0] - 2023-06-11

Cache Remember 是一个简单的 Rust 缓存库,允许您缓存函数调用的结果一段时间。受到 Laravel 的 cache remember 启发。

remember 函数使用异步函数作为其参数之一,该函数必须返回一个实现了 Deserialize 的值,Serialize 为 serde。如果它有一个缓存的值,它将返回该值而不执行函数,否则它将执行函数并将结果存储在缓存中以供未来查询。

[0.1.2] - 2023-06-11

在 forget()、forget_all() 和 purge() 函数中删除不必要的异步操作并返回结果。

[0.1.3] - 2023-06-11

将 Box dyn std::error::Error 修改为现在接受任何实现了 Display 特性的 Error 返回值的函数。将 Mutex 修改为 RwLock 以允许多次同时读取。

示例

    use cache_remember::CacheRemember;
    use std::thread;
    use std::time::Duration;
    use serde::{Deserialize, Serialize};
    use tokio;

    #[derive(Debug, Serialize, Deserialize, Clone)]
    pub struct User {
        pub name: String,
        pub email: String,
    }

    pub async fn get_user() -> Result<User, Box<dyn std::error::Error>> {
        thread::sleep(Duration::from_secs(1));
        Ok(User {
            name: "Joel Torres".to_string(),
            email: "[email protected]".to_string(),
        })
    }

    fn main() {
            // Create a new cache instance
            let cache = Cache::new();
            // Get the result of the function call
            let fun = get_user();
            let hours : u64 = 1;
            let result = cache.remember("test_remember", hours, fun).await.unwrap();
            println!("{:?}", result);

            //forget the cache
            cache.forget("test_remember");

            // remember forever
            let fun = get_user();
            let result = cache.remember_forever("test_remember", fun).await.unwrap();
            println!("{:?}", result);

            //forget all cache
            cache.forget_all();
            println!("{:?}", cache);

            //purge expired records in cache
            cache.purge();
    }

依赖项

~1.1–7MB
~47K SLoC