百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
C

cached

> 编程语言
开源

Rust 缓存结构和简单的函数记忆化

2.1K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

Rust 缓存结构和简单的函数记忆化

cached 提供了几种缓存结构的实现,以及用于定义备忘函数的宏。直接使用存储类型时,首先使用 use cached::prelude::*;。简短的方法名(get/set/len/…)都位于通用扩展特性上,而 prelude 通过一次导入将每个特性都带入(见下面的方法命名部分)。

需要 Rust >= 1.92。 (在 1.92 之前,async_core/async 特性无法编译:CachedGetOrSetAsync 默认实体遇到了借用限制,rustc 属性已被标记为 Rust-lang/Rust#100013。Rust-version 是一个单个 crate 级别的值,因此最低版本适用于每个特性集。)

使用#[cached]/#[once]宏定义的备存函数是线程安全的,其后端函数缓存被封装在一个互斥锁/读写锁中。#[concurrent_cached]函数通过存储自身的内部同步来实现线程安全:分片存储使用每个分片的parking_lot::RwLock;Redis和磁盘存储依赖于各自服务器/文件系统的并发机制。默认情况下,#[cached]不使用写同步:对于相同的键,并发的未备存调用可能会各自独立计算并覆盖彼此,与 2.x 行为和 Python 的functools.lru_cache相匹配。将sync_writes = "by_key"设置为对相同键的并发首次调用进行去重,通过按键分组的锁。将sync_writes = true(或"default")设置为在每次未命中期间保持整个缓存锁。注意:"by_key"在整个函数体中保持按键分组锁,因此不应用于递归或重入备存函数(当活动调用链中的键共享一个分组时存在死锁风险)。#[once]默认为不进行同步(添加sync_writes = true以序列化并发首次调用);#[concurrent_cached]不支持sync_writes。对于"by_key"的每个键锁分组的数量可以通过sync_writes_buckets = N(默认 64)进行调整。

  • 请参阅 cached::stores 文档](https://docs.rs/cached/latest/cached/stores/index.html) 了解可用的缓存存储。- 请参阅 [macros 文档

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rustcachecachinglrucachememoization

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言