Documentation
¶
Index ¶
- Constants
- Variables
- type ARC
- func (c *ARC) Get(key interface{}) (interface{}, error)
- func (c *ARC) GetALL(checkExpired bool) map[interface{}]interface{}
- func (c *ARC) GetIFPresent(key interface{}) (interface{}, error)
- func (c *ARC) Has(key interface{}) bool
- func (c *ARC) Keys(checkExpired bool) []interface{}
- func (c *ARC) Len(checkExpired bool) int
- func (c *ARC) Purge()
- func (c *ARC) Remove(key interface{}) bool
- func (c *ARC) Set(key, value interface{}) error
- func (c *ARC) SetWithExpire(key, value interface{}, expiration time.Duration) error
- type AddedFunc
- type Cache
- type CacheBuilder
- func (cb *CacheBuilder) ARC() *CacheBuilder
- func (cb *CacheBuilder) AddedFunc(addedFunc AddedFunc) *CacheBuilder
- func (cb *CacheBuilder) Build() Cache
- func (cb *CacheBuilder) Clock(clock Clock) *CacheBuilder
- func (cb *CacheBuilder) DeserializeFunc(deserializeFunc DeserializeFunc) *CacheBuilder
- func (cb *CacheBuilder) EvictType(tp string) *CacheBuilder
- func (cb *CacheBuilder) EvictedFunc(evictedFunc EvictedFunc) *CacheBuilder
- func (cb *CacheBuilder) Expiration(expiration time.Duration) *CacheBuilder
- func (cb *CacheBuilder) LFU() *CacheBuilder
- func (cb *CacheBuilder) LRU() *CacheBuilder
- func (cb *CacheBuilder) LoaderExpireFunc(loaderExpireFunc LoaderExpireFunc) *CacheBuilder
- func (cb *CacheBuilder) LoaderFunc(loaderFunc LoaderFunc) *CacheBuilder
- func (cb *CacheBuilder) PurgeVisitorFunc(purgeVisitorFunc PurgeVisitorFunc) *CacheBuilder
- func (cb *CacheBuilder) SerializeFunc(serializeFunc SerializeFunc) *CacheBuilder
- func (cb *CacheBuilder) Simple() *CacheBuilder
- type Clock
- type DeserializeFunc
- type EvictedFunc
- type FakeClock
- type Group
- type LFU
- func (c *LFU) Get(key interface{}) (interface{}, error)
- func (c *LFU) GetALL(checkExpired bool) map[interface{}]interface{}
- func (c *LFU) GetIFPresent(key interface{}) (interface{}, error)
- func (c *LFU) Has(key interface{}) bool
- func (c *LFU) Keys(checkExpired bool) []interface{}
- func (c *LFU) Len(checkExpired bool) int
- func (c *LFU) Purge()
- func (c *LFU) Remove(key interface{}) bool
- func (c *LFU) Set(key, value interface{}) error
- func (c *LFU) SetWithExpire(key, value interface{}, expiration time.Duration) error
- type LRU
- func (c *LRU) Get(key interface{}) (interface{}, error)
- func (c *LRU) GetALL(checkExpired bool) map[interface{}]interface{}
- func (c *LRU) GetIFPresent(key interface{}) (interface{}, error)
- func (c *LRU) Has(key interface{}) bool
- func (c *LRU) Keys(checkExpired bool) []interface{}
- func (c *LRU) Len(checkExpired bool) int
- func (c *LRU) Purge()
- func (c *LRU) Remove(key interface{}) bool
- func (c *LRU) Set(key, value interface{}) error
- func (c *LRU) SetWithExpire(key, value interface{}, expiration time.Duration) error
- type LoaderExpireFunc
- type LoaderFunc
- type PurgeVisitorFunc
- type RealClock
- type SerializeFunc
Constants ¶
const ( TYPE_SIMPLE = "simple" TYPE_LRU = "lru" TYPE_LFU = "lfu" TYPE_ARC = "arc" )
Variables ¶
var KeyNotFoundError = errors.New("Key not found.")
Functions ¶
This section is empty.
Types ¶
type ARC ¶
type ARC struct {
// contains filtered or unexported fields
}
Constantly balances between LRU and LFU, to improve the combined result.
func (*ARC) Get ¶
Get a value from cache pool using key if it exists. If not exists and it has LoaderFunc, it will generate the value using you have specified LoaderFunc method returns value.
func (*ARC) GetIFPresent ¶
GetIFPresent gets a value from cache pool using key if it exists. If it dose not exists key, returns KeyNotFoundError. And send a request which refresh value for specified key if cache object has LoaderFunc.
type Cache ¶
type Cache interface {
Set(key, value any) error
SetWithExpire(key, value any, expiration time.Duration) error
Get(key any) (any, error)
GetIFPresent(key any) (any, error)
GetALL(checkExpired bool) map[any]any
Remove(key any) bool
Purge()
Keys(checkExpired bool) []any
Len(checkExpired bool) int
Has(key any) bool
// contains filtered or unexported methods
}
type CacheBuilder ¶
type CacheBuilder struct {
// contains filtered or unexported fields
}
func New ¶
func New(size int) *CacheBuilder
func (*CacheBuilder) ARC ¶
func (cb *CacheBuilder) ARC() *CacheBuilder
func (*CacheBuilder) AddedFunc ¶
func (cb *CacheBuilder) AddedFunc(addedFunc AddedFunc) *CacheBuilder
func (*CacheBuilder) Build ¶
func (cb *CacheBuilder) Build() Cache
func (*CacheBuilder) Clock ¶
func (cb *CacheBuilder) Clock(clock Clock) *CacheBuilder
func (*CacheBuilder) DeserializeFunc ¶
func (cb *CacheBuilder) DeserializeFunc(deserializeFunc DeserializeFunc) *CacheBuilder
func (*CacheBuilder) EvictType ¶
func (cb *CacheBuilder) EvictType(tp string) *CacheBuilder
func (*CacheBuilder) EvictedFunc ¶
func (cb *CacheBuilder) EvictedFunc(evictedFunc EvictedFunc) *CacheBuilder
func (*CacheBuilder) Expiration ¶
func (cb *CacheBuilder) Expiration(expiration time.Duration) *CacheBuilder
func (*CacheBuilder) LFU ¶
func (cb *CacheBuilder) LFU() *CacheBuilder
func (*CacheBuilder) LRU ¶
func (cb *CacheBuilder) LRU() *CacheBuilder
func (*CacheBuilder) LoaderExpireFunc ¶
func (cb *CacheBuilder) LoaderExpireFunc(loaderExpireFunc LoaderExpireFunc) *CacheBuilder
Set a loader function with expiration. loaderExpireFunc: create a new value with this function if cached value is expired. If nil returned instead of time.Duration from loaderExpireFunc than value will never expire.
func (*CacheBuilder) LoaderFunc ¶
func (cb *CacheBuilder) LoaderFunc(loaderFunc LoaderFunc) *CacheBuilder
Set a loader function. loaderFunc: create a new value with this function if cached value is expired.
func (*CacheBuilder) PurgeVisitorFunc ¶
func (cb *CacheBuilder) PurgeVisitorFunc(purgeVisitorFunc PurgeVisitorFunc) *CacheBuilder
func (*CacheBuilder) SerializeFunc ¶
func (cb *CacheBuilder) SerializeFunc(serializeFunc SerializeFunc) *CacheBuilder
func (*CacheBuilder) Simple ¶
func (cb *CacheBuilder) Simple() *CacheBuilder
type EvictedFunc ¶
type FakeClock ¶
func NewFakeClock ¶
func NewFakeClock() FakeClock
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group represents a class of work and forms a namespace in which units of work can be executed with duplicate suppression.
func (*Group) Do ¶
func (g *Group) Do(key interface{}, fn func() (interface{}, error), isWait bool) (interface{}, bool, error)
Do executes and returns the results of the given function, making sure that only one execution is in-flight for a given key at a time. If a duplicate comes in, the duplicate caller waits for the original to complete and receives the same results.
type LFU ¶
type LFU struct {
// contains filtered or unexported fields
}
Discards the least frequently used items first.
func (*LFU) Get ¶
Get a value from cache pool using key if it exists. If it dose not exists key and has LoaderFunc, generate a value using `LoaderFunc` method returns value.
func (*LFU) GetIFPresent ¶
GetIFPresent gets a value from cache pool using key if it exists. If it dose not exists key, returns KeyNotFoundError. And send a request which refresh value for specified key if cache object has LoaderFunc.
type LRU ¶
type LRU struct {
// contains filtered or unexported fields
}
Discards the least recently used items first.
func (*LRU) Get ¶
Get a value from cache pool using key if it exists. If it dose not exists key and has LoaderFunc, generate a value using `LoaderFunc` method returns value.
func (*LRU) GetIFPresent ¶
GetIFPresent gets a value from cache pool using key if it exists. If it dose not exists key, returns KeyNotFoundError. And send a request which refresh value for specified key if cache object has LoaderFunc.
