Documentation ¶
Overview ¶
Package cache provides interface and implementation of a cache algorithms.
Index ¶
- type Cache
- func (r *Cache) Capacity() int
- func (r *Cache) Close(force bool)
- func (r *Cache) Delete(ns, key uint64, delFunc func()) bool
- func (r *Cache) Evict(ns, key uint64) bool
- func (r *Cache) EvictAll()
- func (r *Cache) EvictNS(ns uint64)
- func (r *Cache) Get(ns, key uint64, setFunc func() (size int, value Value)) *Handle
- func (r *Cache) GetStats() Stats
- func (r *Cache) Nodes() int
- func (r *Cache) SetCapacity(capacity int)
- func (r *Cache) Size() int
- type Cacher
- type Handle
- type NamespaceGetter
- type Node
- type Stats
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
Cache is a 'cache map'.
func (*Cache) Close ¶
Close closes the 'cache map'. All 'Cache' method is no-op after 'cache map' is closed. All 'cache node' will be evicted from 'cacher'.
If 'force' is true then all 'cache node' will be forcefully released even if the 'node ref' is not zero.
func (*Cache) Delete ¶
Delete removes and ban 'cache node' with the given namespace and key. A banned 'cache node' will never inserted into the 'cache tree'. Ban only attributed to the particular 'cache node', so when a 'cache node' is recreated it will not be banned.
If delFunc is not nil, then it will be executed if such 'cache node' doesn't exist or once the 'cache node' is released.
Delete return true is such 'cache node' exist.
func (*Cache) Evict ¶
Evict evicts 'cache node' with the given namespace and key. This will simply call Cacher.Evict.
Evict return true is such 'cache node' exist.
func (*Cache) EvictAll ¶
func (r *Cache) EvictAll()
EvictAll evicts all 'cache node'. This will simply call Cacher.EvictAll.
func (*Cache) EvictNS ¶
EvictNS evicts 'cache node' with the given namespace. This will simply call Cacher.Evict on all nodes with the given namespace.
func (*Cache) Get ¶
Get gets 'cache node' with the given namespace and key. If cache node is not found and setFunc is not nil, Get will atomically creates the 'cache node' by calling setFunc. Otherwise Get will returns nil.
The returned 'cache handle' should be released after use by calling Release method.
func (*Cache) SetCapacity ¶
SetCapacity sets cache capacity.
type Cacher ¶
type Cacher interface { // Capacity returns cache capacity. Capacity() int // SetCapacity sets cache capacity. SetCapacity(capacity int) // Promote promotes the 'cache node'. Promote(n *Node) // Ban evicts the 'cache node' and prevent subsequent 'promote'. Ban(n *Node) // Evict evicts the 'cache node'. Evict(n *Node) }
Cacher provides interface to implements a caching functionality. An implementation must be safe for concurrent use.
type Handle ¶
type Handle struct {
// contains filtered or unexported fields
}
Handle is a 'cache handle' of a 'cache node'.
type NamespaceGetter ¶
NamespaceGetter provides convenient wrapper for namespace.
type Node ¶
Node is a 'cache node'.