/nscache

A Go caching framework that supports multiple data source drivers

Primary LanguageGoApache License 2.0Apache-2.0

nscache

Build License Go Reference Go Report Card codecov Release Mentioned in Awesome Go

Installation

go get -u github.com/no-src/nscache

Quick Start

First, you need to import the cache driver, then create your cache component instance with the specified connection string and use it.

Current support following cache drivers

Driver Import Driver Package Connection String Example
Memory github.com/no-src/nscache/memory memory:
Redis github.com/no-src/nscache/redis redis://127.0.0.1:6379
BuntDB github.com/no-src/nscache/buntdb buntdb://:memory: or buntdb://buntdb.db
Etcd github.com/no-src/nscache/etcd etcd://127.0.0.1:2379?dial_timeout=5s
BoltDB github.com/no-src/nscache/boltdb boltdb://boltdb.db
FreeCache github.com/no-src/nscache/freecache freecache://?cache_size=50mib
BigCache github.com/no-src/nscache/bigcache bigcache://?eviction=10m
FastCache github.com/no-src/nscache/fastcache fastcache://?max_bytes=50mib

For example, initial a memory cache and write, read and remove data.

package main

import (
	"time"

	_ "github.com/no-src/nscache/memory"

	"github.com/no-src/log"
	"github.com/no-src/nscache"
)

func main() {
	// initial cache driver
	c, err := nscache.NewCache("memory:")
	if err != nil {
		log.Error(err, "init cache error")
		return
	}
	defer c.Close()

	// write data
	k := "hello"
	c.Set(k, "world", time.Minute)

	// read data
	var v string
	if err = c.Get(k, &v); err != nil {
		log.Error(err, "get cache error")
		return
	}
	log.Info("key=%s value=%s", k, v)

	// remove data
	if err = c.Remove(k); err != nil {
		log.Error(err, "remove cache error")
		return
	}
}