fn_cache
快速开始
安装指南
📦 系统要求
🔧 安装方式
使用 pip 安装(推荐)
从源码安装
安装开发依赖
安装文档依赖
🚀 快速验证安装
🔌 Redis 配置(可选)
Ubuntu/Debian
macOS
Windows
验证 Redis 连接
⚙️ 环境变量配置
🔧 开发环境设置
📋 依赖项说明
核心依赖
可选依赖
开发依赖
🐛 常见安装问题
1. 权限问题
2. Python 版本问题
3. Redis 连接问题
4. 依赖冲突
📞 获取帮助
🎯 下一步
快速上手
🎯 学习目标
🚀 第一步:基本缓存
🔄 第二步:异步函数缓存
🎛️ 第三步:配置缓存策略
TTL 缓存(基于时间过期)
LRU 缓存(最近最少使用)
💾 第四步:使用 Redis 存储
📊 第五步:缓存统计和监控
🔧 第六步:自定义缓存键
🎛️ 第七步:全局缓存控制
📝 完整示例
🎯 下一步
基础示例
🚀 快速开始
1. 基本缓存
2. 异步函数缓存
🎛️ 缓存策略示例
TTL 缓存(基于时间过期)
LRU 缓存(最近最少使用)
💾 存储后端示例
内存存储(默认)
Redis 存储
🔑 缓存键示例
默认缓存键
自定义缓存键
使用缓存键枚举
📊 序列化示例
JSON 序列化(默认)
Pickle 序列化
MessagePack 序列化
🎛️ 全局控制示例
全局缓存开关
缓存失效
📈 监控示例
缓存统计
内存监控
🔧 高级示例
动态过期时间
缓存预热
📝 完整示例
🎯 下一步
🧩 排除特定类型参数的缓存键生成
核心概念
缓存装饰器
🎯 基本概念
📝 基本用法
最简单的用法
异步函数支持
⚙️ 配置参数
缓存策略配置
TTL 缓存(默认)
LRU 缓存
存储后端配置
内存存储(默认)
Redis 存储
序列化配置
🔑 缓存键配置
默认缓存键生成
自定义缓存键函数
使用缓存键枚举
🎛️ 高级配置
动态过期时间
缓存预热
自定义前缀
🔧 装饰器方法
🚫 缓存控制
跳过缓存读取
跳过缓存写入
等待缓存写入
📊 性能监控
启用统计
内存监控
🔄 版本控制
全局版本控制
用户级版本控制
🎯 最佳实践
1. 选择合适的缓存策略
2. 合理设置缓存时间
3. 使用有意义的缓存键
4. 处理缓存异常
5. 监控缓存性能
🐛 常见问题
1. 缓存键冲突
2. 缓存穿透
3. 缓存雪崩
📚 相关链接
API参考
装饰器 API 参考
📋 类定义
🔧 构造函数
📝 参数详解
cache_type: CacheType
storage_type: StorageType
ttl_seconds: int
max_size: int
key_func: Optional[Callable]
prefix: str
preload_provider: Optional[Callable]
serializer_type: Optional[SerializerType]
serializer_kwargs: Optional[dict]
make_expire_sec_func: Optional[Callable]
🔄 调用方法
call
(func: Callable) -> Callable
🎛️ 装饰器方法
decorator()
📊 缓存管理器访问
🔧 缓存控制参数
cache_read: bool
cache_write: bool
wait_for_write: bool
📈 性能监控
启用统计
启用内存监控
🔄 版本控制
全局版本控制
用户级版本控制
🎯 完整示例
🐛 错误处理
📚 相关链接
示例教程
基础示例
🚀 快速开始
1. 基本缓存
2. 异步函数缓存
🎛️ 缓存策略示例
TTL 缓存(基于时间过期)
LRU 缓存(最近最少使用)
💾 存储后端示例
内存存储(默认)
Redis 存储
🔑 缓存键示例
默认缓存键
自定义缓存键
使用缓存键枚举
📊 序列化示例
JSON 序列化(默认)
Pickle 序列化
MessagePack 序列化
🎛️ 全局控制示例
全局缓存开关
缓存失效
📈 监控示例
缓存统计
内存监控
🔧 高级示例
动态过期时间
缓存预热
📝 完整示例
🎯 下一步
🧩 排除特定类型参数的缓存键生成
帮助
常见问题 (FAQ)
🔧 安装和配置
Q: 如何安装 fn_cache?
Q: 支持哪些 Python 版本?
Q: 如何配置 Redis 连接?
Q: 如何设置环境变量配置?
🎛️ 基本使用
Q: 如何为函数添加缓存?
Q: 如何缓存异步函数?
Q: 如何选择缓存策略?
Q: 如何自定义缓存键?
💾 存储后端
Q: 内存存储和 Redis 存储有什么区别?
Q: 如何切换存储后端?
Q: Redis 连接失败怎么办?
Q: 如何配置 Redis 集群?
📊 序列化
Q: 如何选择序列化器?
Q: 序列化失败怎么办?
Q: 如何序列化自定义对象?
🔄 缓存控制
Q: 如何禁用全局缓存?
Q: 如何清除特定函数的缓存?
Q: 如何使所有缓存失效?
Q: 如何跳过缓存读取?
📈 监控和统计
Q: 如何查看缓存命中率?
Q: 如何监控内存使用?
Q: 如何重置统计信息?
🔧 高级功能
Q: 如何实现动态过期时间?
Q: 如何实现缓存预热?
Q: 如何实现用户级缓存失效?
🐛 故障排除
Q: 缓存不生效怎么办?
Q: 内存占用过高怎么办?
Q: Redis 连接超时怎么办?
Q: 序列化错误怎么办?
Q: 异步函数缓存不工作?
🔧 性能优化
Q: 如何提高缓存命中率?
Q: 如何减少内存占用?
Q: 如何提高 Redis 性能?
📚 更多帮助
Q: 在哪里可以找到更多示例?
Q: 如何报告 Bug?
Q: 如何贡献代码?
Q: 如何获取最新版本?
📞 联系支持
开发
开发环境
🚀 快速设置
一键设置开发环境
手动设置
🛠️ 开发工具
Makefile 命令
基础命令
代码质量
测试
文档
构建和发布
检查和验证
维护
示例和工具
🔧 开发工作流
日常开发
发布前检查
文档开发
📋 代码规范
Python 代码规范
提交信息规范
分支命名规范
🧪 测试
运行测试
测试覆盖率
📚 文档开发
文档结构
添加新文档
文档格式
🔍 调试
日志配置
调试模式
🚀 性能分析
性能测试
内存分析
🔧 环境变量
开发环境变量
📦 发布流程
版本管理
发布步骤
发布检查清单
🤝 贡献指南
提交 Pull Request
代码审查
📞 获取帮助
🔗 相关链接
fn_cache
索引
索引