#redis #cache #memory #object #in-memory #customization #expire

mouscache

一个用于将对象存储在 Redis 或内存中的 crate

25 个版本

0.5.6 2020 年 8 月 3 日
0.5.5 2019 年 11 月 26 日
0.5.4 2019 年 5 月 28 日
0.5.3 2019 年 1 月 29 日
0.5.1 2018 年 7 月 23 日

#150 in 缓存

Download history 105/week @ 2024-03-31

每月 56 次下载
用于 qui-vive

MIT 许可证

45KB
1K SLoC

mouscache-rs

Mouscache doc badge dependency status

一个小型库,用于使用 Redis 或内存缓存操作对象

基本用法

use mouscache;

#[derive(Cacheable, Clone, Debug)]
struct YourData {
    field1: u16,
    field2: String,
}

fn main() {
    let data = YourData {
        field1: 42,
        field2: String::from("Hello, World!"),
    };

    if let Ok(mut cache) = mouscache::redis("localhost", None) {
        let _ = cache.insert("test", data.clone());

        let data2: YourData = cache.get("test").unwrap();

        assert_eq!(data.field1, data2.field1);
        assert_eq!(data.field2, data2.field2);
    }
}

自定义要缓存的项

Mouscache 现在支持 2 个自定义属性来自定义条目

expires 属性

指定条目无效的秒数

use mouscache;

#[derive(Cacheable, Clone, Debug)]
#[cache(expires="10")] // each entry of type YouCustomDataType will be valid 10 sec.
struct YouCustomDataType {
    yourPrecious_field: String
}

rename 属性

指定用于插入条目的名称

use mouscache;

#[derive(Cacheable, Clone, Debug)]
#[cache(rename="ThisNameIsCooler")] // each entry of type YouCustomDataType will be inserted with ThisNameIsCooler
struct YouCustomDataType {
    yourPrecious_field: String
}

##TODO

  • 添加对具有命名字段的 struct 的支持
  • 添加数据属性
  • 添加对无名称字段的 support
  • 添加对 enum 的支持

依赖关系

~6–12MB
~144K SLoC