Skip to content

Repository files navigation

go-generics-cache

.github/workflows/test.ymlcodecovGo Reference

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 is introduced in 1.18.

  • a thread-safe
  • implemented with Go Generics
  • TTL supported (with expiration times)
  • Simple cache is like map[string]interface{}
  • Cache replacement policies
    • Least recently used (LRU)
      • Discards the least recently used items first.
      • See examples
    • Least-frequently used (LFU)
    • First in first out (FIFO)
      • Using this algorithm the cache behaves in the same way as a FIFO queue.
      • The cache evicts the blocks in the order they were added, without any regard to how often or how many times they were accessed before.
      • See examples
    • Most recently used (MRU)
      • In contrast to Least Recently Used (LRU), MRU discards the most recently used items first.
      • See examples
    • Clock
      • Clock is a more efficient version of FIFO than Second-chance cache algorithm.
      • See examples

Requirements

Go 1.18 or later.

Install

$ go get github.com/Code-Hex/go-generics-cache

Usage

See also examples or go playground

package main
import (
"context""fmt""time"
cache "github.com/Code-Hex/go-generics-cache"
)
funcmain() {
ctx, cancel:=context.WithCancel(context.Background())
defercancel()
// use simple cache algorithm without options.c:= cache.NewContext[string, int](ctx)
c.Set("a", 1)
gota, aok:=c.Get("a")
gotb, bok:=c.Get("b")
fmt.Println(gota, aok) // 1 truefmt.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) // 27decremented:=nc.Decrement("age", 1)
fmt.Println(decremented) // 26
}

Articles

About

A key:value store/cache library written in Go generics. LRU, LFU, FIFO, MRU, Clock support.

Topics

Resources

Stars

487 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages