1package keysutil 2 3import lru "github.com/hashicorp/golang-lru" 4 5type TransitLRU struct { 6 size int 7 lru *lru.TwoQueueCache 8} 9 10func NewTransitLRU(size int) (*TransitLRU, error) { 11 lru, err := lru.New2Q(size) 12 return &TransitLRU{lru: lru, size: size}, err 13} 14 15func (c *TransitLRU) Delete(key interface{}) { 16 c.lru.Remove(key) 17} 18 19func (c *TransitLRU) Load(key interface{}) (value interface{}, ok bool) { 20 return c.lru.Get(key) 21} 22 23func (c *TransitLRU) Store(key, value interface{}) { 24 c.lru.Add(key, value) 25} 26 27func (c *TransitLRU) Size() int { 28 return c.size 29} 30