gookit/cache

请问 cache 是否有定期清理过期的内容?

iredmail opened this issue · 7 comments

Hi,

感谢提供 cache 包。:)

粗略过了几个源码代码,file/memory cache 似乎没有定期清理过期的内容,而是只在 Get() 的时候检查命中的内容是否过期。
假如用 Set() 添加了内容并设置了过期时间,但是之后使用过程中从未命中,那它会在过期时间到了之后被(主动)清理掉吗?

内置的实现得比较简单。有兴趣可以参与扩展下 :)

感谢回复。
意思是,现在的实现是没有自动清理过期内容的?

嗯嗯 是的。只会在获取时处理下

挖的这个坑有点深啊 :(

我也遇到了非常依赖缓存定期清理的场景。看了下代码发现Has方法里面没有做过期检查啊,也就是说过期的缓存在没有调用get之前也会返回true。@inhere 请问大佬有计划加入缓存过期清理吗?或者在has等其他方法中先进行过期清理然后再执行相应逻辑。

@anxuanzi Has 的调整了下

内置的实现,可以作为参考 不推荐生产环境使用。

推荐使用下面这样的成熟的三方驱动库,功能更稳定。注册到管理器里面,使用都是一样的。

cache.Register(gcache.Name, gcache.New(1000))
cache.Register(gocache.Name, gocache.NewGoCache(cache.OneDay, cache.FiveMinutes))

@anxuanzi Has 的调整了下

内置的实现,可以作为参考 不推荐生产环境使用。

推荐使用下面这样的成熟的三方驱动库,功能更稳定。注册到管理器里面,使用都是一样的。

cache.Register(gcache.Name, gcache.New(1000))
cache.Register(gocache.Name, gocache.NewGoCache(cache.OneDay, cache.FiveMinutes))

非常感谢您的建议,我已使用gocache,非常的好用。感谢大脑的项目让缓存变的如此简单[手动滑稽]!