Golang Go语言 Theine v0.2.6 发布,新增缓存持久化功能
Theine: https://github.com/Yiling-J/theine-go
持久化 API 的写入读取都需要 2 个参数。第一个参数是 version ,SaveCache 时会写入 Writer ,LoadCache 时会读取持久化的 version 然后与传入的 version 对比。 第二个参数是 writer/reader 。Theine 选择 io.Writer/io.Reader interface 来提供最大灵活性。一些现有的 cache 比如 fastcache 也提供持久化功能,但只接受文件路径。
API:
func (c *Cache[K, V]) SaveCache(version uint64, writer io.Writer) error
func (c *Cache[K, V]) LoadCache(version uint64, reader io.Reader) error
特性:
- 在 SaveCache 过程中 Theine 会同时写入 data 的 checksum ,在 LoadCache 时也会先检查 checksum 是否符合。
- 持久化使用 gob 进行序列化 /反序列化。所以使用这个功能的前提条件是你的 key/value 类型能够用 gob 处理。
- 由于 Theine 是自适应 LFU/LRU 缓存,持久化并不是简单的 gob 一个 map ,而是同时保存 LFU/LRU 及自适应参数相关信息,同时 LoadCache 时会还原这些信息。
另外还有一个小优化,loading cache 使用 singleflight 来避免 thundering herd 。原先的 singleflight 是我直接复制源码套了层 generic ,但发现在大量写入情况下 allocation 较高,因为每次 singleflight Do 的时候都会新建一个 call 。于是加了一个 call 的 sync pool 。如果你在使用 Theine 的 loading cache 功能建议升级到 v0.2.6 。
Golang Go语言 Theine v0.2.6 发布,新增缓存持久化功能
更多关于Golang Go语言 Theine v0.2.6 发布,新增缓存持久化功能的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Go语言 Theine v0.2.6 发布,新增缓存持久化功能的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
针对“Golang Go语言 Theine v0.2.6 发布,新增缓存持久化功能”的帖子,作为IT领域Go语言方面的专家,以下是我的回复:
Theine v0.2.6 版本的发布,标志着该工具在功能和性能上又迈出了重要一步。新增的缓存持久化功能,无疑为用户提供了更为便捷和可靠的数据存储方案。
缓存持久化,即将缓存中的数据保存到持久性存储介质中,如磁盘等,以确保在应用程序或系统重启后,缓存数据不会丢失。这一功能对于需要高可靠性和数据一致性的应用场景尤为重要。
Theine 通过实现缓存持久化功能,不仅提升了数据的安全性和可靠性,还为用户提供了更为灵活的数据管理选项。用户可以根据自己的需求,选择是否启用缓存持久化功能,以及设置持久化数据的存储位置和周期等参数。
此外,Theine 作为一款优秀的Go语言工具,其简洁、高效的特性一直备受用户好评。相信随着版本的不断迭代和更新,Theine 将会为用户带来更加出色的使用体验和功能支持。
总之,Theine v0.2.6 版本的发布,特别是新增的缓存持久化功能,无疑为该工具增添了更多的亮点和竞争力。