我正在寻找具有存储过期数据能力的存储。我的意思是,一个可以指定要存储的数据和超时的结构,并且该值将在一段时间后被删除。
如果需要缓存,可以考虑使用cache2go:
cache := cache2go.Cache("c")
val := struct{x string}{"This is a test!"}
cache.Add("valA", 5*time.Second, &val)
由于cache2go是用于缓存的,它只在内存上操作,但是您可以指定一个数据加载例程来惰性加载给定键的缺失值。数据加载程序可以用来从磁盘加载值:
cache.SetDataLoader(func(key interface{}) *cache2go.CacheItem {
val := loadFromDisk()
item := cache2go.CreateCacheItem(key, 0, val)
return &item
})
go-cache也支持这一点,并支持从磁盘加载缓存项:
func (c *Cache) Set(k string, x interface{}, d time.Duration)
将项添加到缓存中,替换任何现有项。如果持续时间为0,使用缓存的默认过期时间。如果是-1,则该项永远不会到期。func (c *Cache) Save(wio . writer) error
将缓存的项(使用Gob)写入io.Writer。返回一个错误序列化失败,例如,因为存在不可序列化的对象,例如缓存中的通道。func (c *Cache) Load(r * io.Reader) error
从io中添加(gob序列化的)缓存项。阅读器,不包括任何项目