#cache #redis #derive #object #memory #attributes #mouscache

mouscache_derive

一个实用工具库,用于实现将对象存储在Redis或内存中的特质

6个版本

使用旧的Rust 2015

0.4.0 2018年4月27日
0.3.3 2018年4月24日
0.2.0 2018年4月18日

#307 in #redis


qui-vive 中使用

MIT 许可证

10KB
212

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 现在支持两个自定义属性来自定义条目

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
}

##待办事项

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

lib.rs:

该crate提供了Mouscache的derive宏。

#[macro_use]
extern crate mouscache_derive;

#[derive(Cacheable)]
struct S;

fn main() {}

请参阅mouscache-rs了解如何设置。

依赖

~2MB
~47K SLoC