问答 / 0 / 8 / 创建于 2年前 / 更新于 2年前
有些信息需要在服务启动的时候直接加载到内存里缓存起来,然后每隔一段时间需要更新内存缓存,go中有没有什么库可以使用?
用计划任务就行,常用的是这个库github.com/robfig/cron/v3
简单一点的直接用time.Tick
我写过一个带TTL的内存缓存库: github.com/lxzan/memorycache
github.com/patrickmn/go-cache 一直在用
缓存元素少用它还无所谓, O(n) 的过期检查
func (c *cache) DeleteExpired() { var evictedItems []keyAndValue now := time.Now().UnixNano() c.mu.Lock() for k, v := range c.items { // "Inlining" of expired if v.Expiration > 0 && now > v.Expiration { ov, evicted := c.delete(k) if evicted { evictedItems = append(evictedItems, keyAndValue{k, ov}) } } } c.mu.Unlock() for _, v := range evictedItems { c.onEvicted(v.key, v.value) } }
我要举报该,理由是:
用计划任务就行,常用的是这个库github.com/robfig/cron/v3
简单一点的直接用time.Tick
我写过一个带TTL的内存缓存库: github.com/lxzan/memorycache
github.com/patrickmn/go-cache 一直在用