diff --git a/pkg/common/localcache/cache.go b/pkg/common/localcache/cache.go index f81a1a214..da1932d06 100644 --- a/pkg/common/localcache/cache.go +++ b/pkg/common/localcache/cache.go @@ -16,7 +16,7 @@ type Cache[V any] interface { Del(ctx context.Context, key ...string) } -func New[V any](opts ...Option) Cache[V] { +func NewCache[V any](expire time.Duration, opts ...Option) Cache[V] { opt := defaultOption() for _, o := range opts { o(opt) @@ -27,6 +27,7 @@ func New[V any](opts ...Option) Cache[V] { n: uint64(opt.localSlotNum), } c.timingWheel = NewTimeWheel[string, V](TimingWheelSize, time.Second, c.exec) + go c.timingWheel.Start() for i := 0; i < opt.localSlotNum; i++ { c.slots[i] = NewLRU[string, V](opt.localSlotSize, opt.localSuccessTTL, opt.localFailedTTL, opt.target, c.onEvict) } @@ -39,6 +40,7 @@ func New[V any](opts ...Option) Cache[V] { type cache[V any] struct { n uint64 slots []*LRU[string, V] + expire time.Duration opt *option link link.Link timingWheel *TimeWheel[string, V] @@ -97,6 +99,10 @@ func (c *cache[V]) Del(ctx context.Context, key ...string) { c.del(key...) } } -func (c *cache[V]) exec(key string, value V) { + +func (c *cache[V]) set(key string, value V) { } +func (c *cache[V]) exec(key string, _ V) { + c.del(key) +}