go-generics-cache is an in-memory key:value store/cache that is suitable for applications running on a single machine. This in-memory cache uses Go Generics which will be introduced in 1.18.
- a thread-safe
- implemented with Go Generics
- Simple cache is like
map[string]interface{}
with expiration times- See examples
- LRU cache
- See examples
- LFU cache
Go 1.18 or later.
If Go 1.18 has not been released but you want to try this package, you can easily do so by using the gotip
command.
$ go install golang.org/dl/gotip@latest
$ gotip download # latest commit
$ gotip version
go version devel go1.18-c2397905e0 Sat Nov 13 03:33:55 2021 +0000 darwin/arm64
$ go get github.com/Code-Hex/go-generics-cache
See also examples
package main
import (
"fmt"
"time"
cache "github.com/Code-Hex/go-generics-cache"
)
func main() {
// use simple cache algorithm without options.
c := cache.New[string, int]()
c.Set("a", 1)
gota, aok := c.Get("a")
gotb, bok := c.Get("b")
fmt.Println(gota, aok) // 1 true
fmt.Println(gotb, bok) // 0 false
// Create a cache for Number constraint. key as string, value as int.
nc := cache.NewNumber[string, int]()
nc.Set("age", 26, cache.WithExpiration(time.Hour))
incremented := nc.Increment("age", 1)
fmt.Println(incremented) // 27
decremented := nc.Decrement("age", 1)
fmt.Println(decremented) // 26
}