Documentation ¶
Overview ¶
Package cache provides an easy way to use foundation for your caching operations.
1. the basic usage:
// Create a cache for use. cache := cachego.NewCache() // Set a new entry to cache. cache.Set("key", 666) // Get returns the value of this key. v, ok := cache.Get("key") fmt.Println(v, ok) // Output: 666 true // If you want to change the value of a key, just set a new value of this key. cache.Set("key", "value") // See what value it has. v, ok = cache.Get("key") fmt.Println(v, ok) // Output: value true // If you pass a not existed key to of method, nil and false will be returned. v, ok = cache.Get("not existed key") fmt.Println(v, ok) // Output: <nil> false
2. the ttl usage:
// Create a cache and set an entry to cache. // The ttl is 3 seconds. cache := cachego.NewCache() cache.SetWithTTL("key", "value", 3) // Check if the key is alive. value, ok := cache.Get("key") fmt.Println(value, ok) // Output: value true // Wait for 5 seconds and check again. // Now the key is gone. time.Sleep(5 * time.Second) value, ok = cache.Get("key") fmt.Println(value, ok) // Output: <nil> false
3. the gc usage:
// Create a cache and set an entry to cache. // The ttl is 1 second. cache := cachego.NewCache() cache.SetWithTTL("key", "value", 1) // Wait for 2 seconds and check the key. time.Sleep(2 * time.Second) // We can see this key is gone and we can't get it anymore. value, ok := cache.Get("key") fmt.Println(value, ok) // Output: <nil> false // However, the key still stores in cache and occupies the space. size := cache.Size() fmt.Println(size) // Output: 1 // We should call Gc() to clean up these dead entries. // Notice that this method will takes some CPU time to finish this task. cache.Gc() size = cache.Size() fmt.Println(size) // Output: 0 // Also, we provide an automatic way to do this job at fixed duration. // It returns a <-chan type which can be used to stop this automatic job. // If you want to stop it, just send an true or false to the chan! stopAutoGc := cache.AutoGc(10 * time.Minute) stopAutoGc <- true
Index ¶
- Constants
- type Cache
- func (c *Cache) AutoGc(duration time.Duration) chan<- bool
- func (c *Cache) Gc()
- func (c *Cache) Get(key string) (interface{}, bool)
- func (c *Cache) Remove(key string)
- func (c *Cache) RemoveAll()
- func (c *Cache) Set(key string, value interface{})
- func (c *Cache) SetWithTTL(key string, value interface{}, ttl int64)
- func (c *Cache) Size() int
Constants ¶
const (
// NeverDie means value.alive() returns true forever.
NeverDie = 0
)
const Version = "v0.1.0"
Version is the version string representation of cachego.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
Cache is a struct of cache.
func (*Cache) AutoGc ¶ added in v0.1.0
AutoGc starts a goroutine to execute Gc() at fixed duration. It returns a <-chan type which can be used to stop this goroutine.
func (*Cache) Gc ¶
func (c *Cache) Gc()
Gc removes dead entries in Cache. Notice that this method is weak-consistency and it doesn't guarantee 100% removed.
func (*Cache) Remove ¶
Remove removes the value of key. If this key is not existed, nothing will happen.
func (*Cache) RemoveAll ¶
func (c *Cache) RemoveAll()
RemoveAll removes all keys in Cache. Notice that this method is weak-consistency.
func (*Cache) SetWithTTL ¶ added in v0.1.0
SetWithTTL sets key and value to Cache with a ttl.