#lru-cache #cache #associative #lru #key-value #data-structures #direct-mapped

associative-cache

一个通用的具有固定容量和随机或最近最少使用(LRU)替换的N路关联缓存

3个稳定版本

2.0.0 2023年5月11日
1.0.1 2019年9月18日

#44 in 缓存

Download history 3502/week @ 2024-03-14 3658/week @ 2024-03-21 2806/week @ 2024-03-28 3508/week @ 2024-04-04 3836/week @ 2024-04-11 4426/week @ 2024-04-18 4202/week @ 2024-04-25 4411/week @ 2024-05-02 15283/week @ 2024-05-09 3333/week @ 2024-05-16 2825/week @ 2024-05-23 2253/week @ 2024-05-30 5169/week @ 2024-06-06 9849/week @ 2024-06-13 4975/week @ 2024-06-20 3328/week @ 2024-06-27

23,763 每月下载量
用于 55 个crates (3 直接)

MIT/Apache

67KB
1K SLoC

associative_cache

一个通用的、固定大小的关联缓存数据结构,将K键映射到V值。

容量

缓存具有由类型参数CCapacity trait控制的恒定、固定大小的容量。缓存条目的内存一次分配并永不调整大小。

关联性

通过类型参数IIndices trait,缓存可以配置为直接映射、双向关联、四向关联等。

替换策略

可以通过类型参数RReplacement trait配置缓存以替换最近最少使用(LRU)条目或随机条目。

示例

use associative_cache::*;

// A two-way associative cache with random replacement mapping
// `String`s to `usize`s.
let cache = AssociativeCache::<
    String,
    usize,
    Capacity512,
    HashTwoWay,
    RandomReplacement
>::default();

// A four-way associative cache with random replacement mapping
// `*mut usize`s to `Vec<u8>`s.
let cache = AssociativeCache::<
    *mut usize,
    Vec<u8>,
    Capacity32,
    PointerFourWay,
    RandomReplacement
>::default();

// An eight-way associative, least recently used (LRU) cache mapping
// `std::path::PathBuf`s to `std::fs::File`s.
let cache = AssociativeCache::<
    std::path::PathBuf,
    WithLruTimestamp<std::fs::File>,
    Capacity128,
    HashEightWay,
    LruReplacement,
>::default();

依赖项

~72KB