Otter 项目使用教程
1. 项目的目录结构及介绍
Otter 项目的目录结构如下:
otter/
├── assets/
├── cmd/
│ └── generator/
├── internal/
├── scripts/
├── .gitignore
├── .golangci.yml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── builder/
│ ├── builder.go
│ └── builder_test.go
├── cache/
│ ├── cache.go
│ └── cache_test.go
├── entry/
│ ├── entry.go
│ └── entry_test.go
├── extension/
│ ├── extension.go
├── go.mod
├── go.sum
└── stats/
├── stats.go
└── stats_test.go
目录结构介绍
- assets/: 存放项目相关的静态资源文件。
- cmd/generator/: 存放命令行工具的生成器代码。
- internal/: 存放项目的内部实现代码,通常不对外公开。
- scripts/: 存放项目的脚本文件,如构建脚本、测试脚本等。
- builder/: 存放缓存构建器的实现代码,包括构建器的逻辑和测试代码。
- cache/: 存放缓存的核心实现代码,包括缓存的逻辑和测试代码。
- entry/: 存放缓存条目的实现代码,包括条目的逻辑和测试代码。
- extension/: 存放缓存扩展功能的实现代码。
- stats/: 存放缓存统计功能的实现代码,包括统计的逻辑和测试代码。
2. 项目的启动文件介绍
Otter 项目的启动文件位于 cmd/generator/ 目录下。该目录包含生成器的主要逻辑代码。启动文件通常是 main.go,但在这个项目中,生成器的启动逻辑可能分散在多个文件中。
启动文件示例
// cmd/generator/main.go
package main
import (
"fmt"
"github.com/maypok86/otter"
)
func main() {
// 创建一个缓存实例
cache, err := otter.MustBuilder[string, string](10_000).
CollectStats().
Cost(func(key string, value string) uint32 {
return 1
}).
WithTTL(time.Hour).
Build()
if err != nil {
panic(err)
}
// 设置缓存项
cache.Set("key", "value")
// 获取缓存项
value, ok := cache.Get("key")
if !ok {
panic("not found key")
}
fmt.Println(value)
// 删除缓存项
cache.Delete("key")
// 关闭缓存并停止 goroutines
cache.Close()
}
3. 项目的配置文件介绍
Otter 项目没有显式的配置文件,但可以通过代码中的构建器参数来配置缓存的行为。例如,可以通过 WithTTL 方法设置缓存项的过期时间,通过 Cost 方法设置缓存项的成本等。
配置示例
// 创建一个缓存实例,并配置 TTL 和成本
cache, err := otter.MustBuilder[string, string](10_000).
CollectStats().
Cost(func(key string, value string) uint32 {
return 1
}).
WithTTL(time.Hour).
Build()
if err != nil {
panic(err)
}
通过这种方式,可以在代码中灵活地配置 Otter 缓存的行为。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



