#cache #redis

mouscache

A crate to store object either in redis or in memory

24 releases

✓ Uses Rust 2018 edition

0.5.5 Nov 26, 2019
0.5.4 May 28, 2019
0.5.3 Jan 29, 2019
0.5.2 Aug 9, 2018
0.5.1 Jul 23, 2018

#12 in Caching

Download history 42/week @ 2019-10-07 94/week @ 2019-10-14 93/week @ 2019-10-21 45/week @ 2019-10-28 29/week @ 2019-11-04 28/week @ 2019-11-11 67/week @ 2019-11-18 112/week @ 2019-11-25 75/week @ 2019-12-02 284/week @ 2019-12-09 36/week @ 2019-12-16 25/week @ 2019-12-23 6/week @ 2019-12-30 34/week @ 2020-01-06 404/week @ 2020-01-13

360 downloads per month
Used in 1 crate

MIT license

46KB
1K SLoC

mouscache-rs

Mouscache doc badge dependency status

A small lib to manipulate object with redis or an in-memory cache

Basic Usage

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);
    }
}

Customizing What's Being Cached

Mouscache now support 2 custom attribute to customize entry :

expires Attribute

Specifies a duration in sec after which the entry is invalid

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 Attribute

Specifies the name which will be used to insert the entry

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

  • Add support for struct with named field
  • Add Data Attribute
  • Add support for unnamed field
  • Add support for enum

Dependencies

~5MB
~109K SLoC