📚 nscache - Awesome Go Library for Database

Go Gopher mascot for nscache

A Go caching framework that supports multiple data source drivers.

🏷️ Database
📂 Data stores with expiring records, in-memory distributed data stores, or in-memory subsets of file-based databases.
10 stars
View on GitHub 🔗

Detailed Description of nscache

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

DriverImport Driver PackageConnection String Example
Memorygithub.com/no-src/nscache/memorymemory:
Redisgithub.com/no-src/nscache/redisredis://127.0.0.1:6379
Redis Clustergithub.com/no-src/nscache/redis_clusterredis-cluster://127.0.0.1:7001?addr=127.0.0.1:7002&addr=127.0.0.1:7003
BuntDBgithub.com/no-src/nscache/buntdbbuntdb://:memory: or buntdb://buntdb.db
Etcdgithub.com/no-src/nscache/etcdetcd://127.0.0.1:2379?dial_timeout=5s
BoltDBgithub.com/no-src/nscache/boltdbboltdb://boltdb.db
FreeCachegithub.com/no-src/nscache/freecachefreecache://?cache_size=50mib
BigCachegithub.com/no-src/nscache/bigcachebigcache://?eviction=10m
FastCachegithub.com/no-src/nscache/fastcachefastcache://?max_bytes=50mib
Memcachedgithub.com/no-src/nscache/memcachedmemcached://127.0.0.1:11211
Proxygithub.com/no-src/nscache/proxy/clientproxy://127.0.0.1:8080

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
	}
}

Command Line Tool

You can use the command line tool to operate all the cache drivers that nscache supports.

Install the command line tool nscache-cli.

go install github.com/no-src/nscache/cmd/nscache-cli@latest

Run the cli tool with specified cache driver connection string to operate cache.

nscache-cli memory:

Proxy

Proxy Server

Install the proxy server nscache-server.

go install github.com/no-src/nscache/cmd/nscache-server@latest

Run the proxy server with specified listen address and cache driver connection string.

nscache-server -addr=:8080 -conn=memory:

Proxy Client

You can use the code to operate cache proxy server like the example code in the Quick Start section.

Or use the nscache-cli to connect to the proxy server and operate cache.

nscache-cli proxy://127.0.0.1:8080