[ PROMPT_NODE_24758 ]
storage-backends
[ SKILL_DOCUMENTATION ]
# 存储后端
> 为缓存和 OAuth 状态管理配置持久化和分布式存储
FastMCP 使用可插拔的存储后端来缓存响应和管理 OAuth 状态。默认情况下,所有存储都在内存中,这非常适合开发,但在重启后不会持久化。FastMCP 支持多种存储后端,您可以轻松地使用自定义实现对其进行扩展。
> **提示:** 存储层由 **[py-key-value-aio](https://github.com/strawgate/py-key-value)** 提供支持,这是一个由 FastMCP 核心维护者维护的异步键值库。该库为多个后端提供了统一的接口,使得根据部署需求切换实现变得容易。
## 可用后端
### 内存存储
**最适合:** 开发、测试、单进程部署
内存存储是所有 FastMCP 存储需求的默认设置。它速度快,无需设置,非常适合入门。
python
from key_value.aio.stores.memory import MemoryStore
# 默认使用 - 无需配置
# 但您也可以显式指定:
cache_store = MemoryStore()
**特性:**
* ✅ 无需设置
* ✅ 非常快
* ❌ 重启后数据丢失
* ❌ 不适合多进程部署
### 磁盘存储
**最适合:** 单服务器生产部署、持久化缓存
磁盘存储将数据持久化到文件系统,使其能够在服务器重启后存活。
python
from key_value.aio.stores.disk import DiskStore
from fastmcp.server.middleware.caching import ResponseCachingMiddleware
# 持久化响应缓存
middleware = ResponseCachingMiddleware(
cache_storage=DiskStore(directory="/var/cache/fastmcp")
)
或者使用 OAuth 令牌存储:
python
from fastmcp.server.auth.providers.github import GitHubProvider
from key_value.aio.stores.disk import DiskStore
auth = GitHubProvider(
client_id="your-id",
client_secret="your-secret",
base_url="https://your-server.com",
client_storage=DiskStore(directory="/var/lib/fastmcp/oauth")
)
**特性:**
* ✅ 数据在重启后持久化
* ✅ 中等负载下性能良好
* ❌ 不适合分布式部署
* ❌ 需要文件系统访问权限
### Redis
**最适合:** 分布式生产部署、跨多台服务器的共享缓存
> **注意:** Redis 支持需要可选依赖:`pip install 'py-key-value-aio[redis]'`
Redis 提供分布式缓存和状态管理,id