Documentation ¶
Overview ¶
Package cache provide a Cache interface and some implement engine Usage:
import(
"github.com/astaxie/beego/cache"
)
bm, err := cache.NewCache("memory", `{"interval":60}`)
Use it like this:
bm.Put("astaxie", 1, 10 * time.Second) bm.Get("astaxie") bm.IsExist("astaxie") bm.Delete("astaxie") more docs http://beego.me/docs/module/cache.md
Package cache implements a LRU cache.
The implementation borrows heavily from SmallLRUCache (originally by Nathan Schrenk). The object maintains a doubly-linked list of elements. When an element is accessed, it is promoted to the head of the list. When space is needed, the element at the tail of the list (the least recently used element) is evicted.
Index ¶
- Variables
- func FileGetContents(filename string) (data []byte, e error)
- func FilePutContents(filename string, content []byte) error
- func GetBool(v interface{}) bool
- func GetFloat64(v interface{}) float64
- func GetInt(v interface{}) int
- func GetInt64(v interface{}) int64
- func GetString(v interface{}) string
- func GobDecode(data []byte, to *FileCacheItem) error
- func GobEncode(data interface{}) ([]byte, error)
- func Register(name string, adapter Instance)
- type Cache
- type FileCache
- func (fc *FileCache) ClearAll() error
- func (fc *FileCache) Decr(key string) error
- func (fc *FileCache) Delete(key string) error
- func (fc *FileCache) Get(key string) interface{}
- func (fc *FileCache) GetMulti(keys []string) []interface{}
- func (fc *FileCache) Incr(key string) error
- func (fc *FileCache) Init()
- func (fc *FileCache) IsExist(key string) bool
- func (fc *FileCache) Put(key string, val interface{}, timeout time.Duration) error
- func (fc *FileCache) StartAndGC(config string) error
- type FileCacheItem
- type Instance
- type Item
- type LRUCache
- func (lru *LRUCache) Capacity() int64
- func (lru *LRUCache) Clear()
- func (lru *LRUCache) Delete(key string) bool
- func (lru *LRUCache) Evictions() int64
- func (lru *LRUCache) Get(key string) (v Value, ok bool)
- func (lru *LRUCache) Items() []Item
- func (lru *LRUCache) Keys() []string
- func (lru *LRUCache) Length() int64
- func (lru *LRUCache) Oldest() (oldest time.Time)
- func (lru *LRUCache) Peek(key string) (v Value, ok bool)
- func (lru *LRUCache) Set(key string, value Value)
- func (lru *LRUCache) SetCapacity(capacity int64)
- func (lru *LRUCache) SetIfAbsent(key string, value Value)
- func (lru *LRUCache) Size() int64
- func (lru *LRUCache) Stats() (length, size, capacity, evictions int64, oldest time.Time)
- func (lru *LRUCache) StatsJSON() string
- type MemoryCache
- func (bc *MemoryCache) ClearAll() error
- func (bc *MemoryCache) Decr(key string) error
- func (bc *MemoryCache) Delete(name string) error
- func (bc *MemoryCache) Get(name string) interface{}
- func (bc *MemoryCache) GetMulti(names []string) []interface{}
- func (bc *MemoryCache) Incr(key string) error
- func (bc *MemoryCache) IsExist(name string) bool
- func (bc *MemoryCache) Put(name string, value interface{}, lifespan time.Duration) error
- func (bc *MemoryCache) StartAndGC(config string) error
- type MemoryItem
- type Value
Constants ¶
This section is empty.
Variables ¶
var ( FileCachePath = "cache" // cache directory FileCacheFileSuffix = ".bin" // cache file suffix FileCacheDirectoryLevel = 2 // cache file deep level if auto generated cache files. FileCacheEmbedExpiry time.Duration // cache expire time, default is no expire forever. )
FileCache Config
var ( // DefaultEvery means the clock time of recycling the expired cache items in memory. DefaultEvery = 60 // 1 minute )
Functions ¶
func FileGetContents ¶
FileGetContents Get bytes to file. if non-exist, create this file.
func FilePutContents ¶
FilePutContents Put bytes to file. if non-exist, create this file.
func GobDecode ¶
func GobDecode(data []byte, to *FileCacheItem) error
GobDecode Gob decodes file cache item.
Types ¶
type Cache ¶
type Cache interface { // get cached value by key. Get(key string) interface{} // GetMulti is a batch version of Get. GetMulti(keys []string) []interface{} // set cached value with key and expire time. Put(key string, val interface{}, timeout time.Duration) error // delete cached value by key. Delete(key string) error // increase cached int value by key, as a counter. Incr(key string) error // decrease cached int value by key, as a counter. Decr(key string) error // check if cached value exists or not. IsExist(key string) bool // clear all cache. ClearAll() error // start gc routine based on config string settings. StartAndGC(config string) error }
Cache interface contains all behaviors for cache adapter. usage:
cache.Register("file",cache.NewFileCache) // this operation is run in init method of file.go. c,err := cache.NewCache("file","{....}") c.Put("key",value, 3600 * time.Second) v := c.Get("key") c.Incr("counter") // now is 1 c.Incr("counter") // now is 2 count := c.Get("counter").(int)
func NewCache ¶
NewCache Create a new cache driver by adapter name and config string. config need to be correct JSON as string: {"interval":360}. it will start gc automatically.
func NewFileCache ¶
func NewFileCache() Cache
NewFileCache Create new file cache with no config. the level and expiry need set in method StartAndGC as config string.
type FileCache ¶
FileCache is cache adapter for file storage.
func (*FileCache) GetMulti ¶
GetMulti gets values from file cache. if non-exist or expired, return empty string.
func (*FileCache) Incr ¶
Incr will increase cached int value. fc value is saving forever unless Delete.
func (*FileCache) Init ¶
func (fc *FileCache) Init()
Init will make new dir for file cache if not exist.
func (*FileCache) Put ¶
Put value into file cache. timeout means how long to keep this file, unit of ms. if timeout equals FileCacheEmbedExpiry(default is 0), cache this item forever.
func (*FileCache) StartAndGC ¶
StartAndGC will start and begin gc for file cache. the config need to be like {CachePath:"/cache","FileSuffix":".bin","DirectoryLevel":2,"EmbedExpiry":0}
type FileCacheItem ¶
FileCacheItem is basic unit of file cache adapter. it contains data and expire time.
type LRUCache ¶
type LRUCache struct {
// contains filtered or unexported fields
}
LRUCache is a typical LRU cache implementation. If the cache reaches the capacity, the least recently used item is deleted from the cache. Note the capacity is not the number of items, but the total sum of the Size() of each item.
func NewLRUCache ¶
NewLRUCache creates a new empty cache with the given capacity.
func (*LRUCache) Get ¶
Get returns a value from the cache, and marks the entry as most recently used.
func (*LRUCache) Items ¶
Items returns all the values for the cache, ordered from most recently used to last recently used.
func (*LRUCache) Keys ¶
Keys returns all the keys for the cache, ordered from most recently used to last recently used.
func (*LRUCache) Oldest ¶
Oldest returns the insertion time of the oldest element in the cache, or a IsZero() time if cache is empty.
func (*LRUCache) SetCapacity ¶
SetCapacity will set the capacity of the cache. If the capacity is smaller, and the current cache size exceed that capacity, the cache will be shrank.
func (*LRUCache) SetIfAbsent ¶
SetIfAbsent will set the value in the cache if not present. If the value exists in the cache, we don't set it.
type MemoryCache ¶
type MemoryCache struct { sync.RWMutex Every int // run an expiration check Every clock time // contains filtered or unexported fields }
MemoryCache is Memory cache adapter. it contains a RW locker for safe map storage.
func (*MemoryCache) ClearAll ¶
func (bc *MemoryCache) ClearAll() error
ClearAll will delete all cache in memory.
func (*MemoryCache) Decr ¶
func (bc *MemoryCache) Decr(key string) error
Decr decrease counter in memory.
func (*MemoryCache) Delete ¶
func (bc *MemoryCache) Delete(name string) error
Delete cache in memory.
func (*MemoryCache) Get ¶
func (bc *MemoryCache) Get(name string) interface{}
Get cache from memory. if non-existed or expired, return nil.
func (*MemoryCache) GetMulti ¶
func (bc *MemoryCache) GetMulti(names []string) []interface{}
GetMulti gets caches from memory. if non-existed or expired, return nil.
func (*MemoryCache) Incr ¶
func (bc *MemoryCache) Incr(key string) error
Incr increase cache counter in memory. it supports int,int32,int64,uint,uint32,uint64.
func (*MemoryCache) IsExist ¶
func (bc *MemoryCache) IsExist(name string) bool
IsExist check cache exist in memory.
func (*MemoryCache) Put ¶
func (bc *MemoryCache) Put(name string, value interface{}, lifespan time.Duration) error
Put cache to memory. if lifespan is 0, it will be forever till restart.
func (*MemoryCache) StartAndGC ¶
func (bc *MemoryCache) StartAndGC(config string) error
StartAndGC start memory cache. it will check expiration in every clock time.
type MemoryItem ¶
type MemoryItem struct {
// contains filtered or unexported fields
}
MemoryItem store memory cache item.
Directories ¶
Path | Synopsis |
---|---|
Package redis for cache provider depend on github.com/garyburd/redigo/redis go install github.com/garyburd/redigo/redis Usage: import( _ "github.com/astaxie/beego/cache/redis" "github.com/astaxie/beego/cache" ) bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`) more docs http://beego.me/docs/module/cache.md
|
Package redis for cache provider depend on github.com/garyburd/redigo/redis go install github.com/garyburd/redigo/redis Usage: import( _ "github.com/astaxie/beego/cache/redis" "github.com/astaxie/beego/cache" ) bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`) more docs http://beego.me/docs/module/cache.md |