Documentation ¶
Overview ¶
Copyright 2020 Ye Zi Jie. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Author: FishGoddess Email: fishgoddess@qq.com Created at 2020/03/14 16:28:56
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
Copyright 2020 Ye Zi Jie. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Author: FishGoddess Email: fishgoddess@qq.com Created at 2020/09/11 00:19:07
Copyright 2020 Ye Zi Jie. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Author: FishGoddess Email: fishgoddess@qq.com Created at 2020/03/14 14:43:24
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.