Agent Server 内置了一个缓存,你可以在已部署的图中使用它。使用键和加载器函数调用 swr,服务器会缓存结果,在后台重新验证过期条目,并在每次读取时返回最新数据。 所有缓存 API 仅限服务端使用,并且需要 LangGraph Agent Server 运行时。值必须可序列化为 JSON。
swr 需要 Agent Server 运行时 v0.7.79 或更高版本,目前处于 测试阶段。 cache_get 和 cache_set 需要 v0.7.29 或更高版本。

快速开始

传入一个键和一个异步加载器函数。如果缓存值可用,swr 会返回该值;否则会调用加载器来获取值:
首次调用时,swr 会等待 load_config() 完成并缓存结果。后续调用会立即返回缓存值,并在后台重新验证。

配置新鲜度

控制缓存值在多长时间内被视为新鲜,以及何时过期:

重新验证的工作方式

与 Pydantic 模型结合使用

传入 model 参数,即可自动序列化和反序列化 Pydantic 模型:
swr 在存储前会调用 model_dump(mode="json"),读取时会调用 model.model_validate()。

缓存身份验证凭据

你可以在自定义身份验证处理器中缓存凭据验证,避免每次请求都访问身份提供商:
完成此配置后,服务器会在 5 分钟内直接返回缓存的用户信息而不进行重新验证,随后在最长 1 小时内于后台进行重新验证。1 小时后,下一个请求会阻塞,直到 validate_and_fetch_user 执行完成。

查看缓存状态

swr 返回一个包含值和缓存状态的 SWRResult 对象:
调用 .mutate() 可以更新缓存值或强制重新验证:

低级缓存 API

如果只需要简单的获取/设置缓存而不需要重新验证,可以直接使用 cache_get 和 cache_set:

cache_get

返回反序列化后的值;如果键不存在或已过期,则返回 None。

cache_set

后续步骤