https://github.com/no-src/nscache
A Go caching framework that supports multiple data source drivers
https://github.com/no-src/nscache
cache cachemanager golang
Last synced: 9 months ago
JSON representation
A Go caching framework that supports multiple data source drivers
- Host: GitHub
- URL: https://github.com/no-src/nscache
- Owner: no-src
- License: apache-2.0
- Created: 2022-04-06T05:29:18.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-02T00:58:31.000Z (over 1 year ago)
- Last Synced: 2024-08-02T02:05:43.824Z (over 1 year ago)
- Topics: cache, cachemanager, golang
- Language: Go
- Homepage:
- Size: 170 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-go-cn - nscache - src/nscache) [![godoc][D]](https://godoc.org/github.com/no-src/nscache) (数据库 / 缓存)
- awesome-go - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- awesome-go - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- awesome-go-with-stars - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- awesome-go - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- awesome-go - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- fucking-awesome-go - nscache - A Go caching framework that supports multiple data source drivers. (Database / Caches)
- awesome-go-cn - nscache - src/nscache) [![godoc][D]](https://godoc.org/github.com/no-src/nscache) (数据库 / 缓存)
- awesome-go-plus - nscache - A Go caching framework that supports multiple data source drivers.  (Database / Caches)
README
# nscache
[](https://github.com/no-src/nscache/actions)
[](https://github.com/no-src/nscache/blob/main/LICENSE)
[](https://pkg.go.dev/github.com/no-src/nscache)
[](https://goreportcard.com/report/github.com/no-src/nscache)
[](https://codecov.io/gh/no-src/nscache)
[](https://github.com/no-src/nscache/releases)
[](https://github.com/avelino/awesome-go)
## Installation
```bash
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` |
| Redis Cluster | `github.com/no-src/nscache/redis_cluster` | `redis-cluster://127.0.0.1:7001?addr=127.0.0.1:7002&addr=127.0.0.1:7003` |
| 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` |
| Memcached | `github.com/no-src/nscache/memcached` | `memcached://127.0.0.1:11211` |
| Proxy | `github.com/no-src/nscache/proxy/client` | `proxy://127.0.0.1:8080` |
For example, initial a memory cache and write, read and remove data.
```go
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`.
```bash
go install github.com/no-src/nscache/cmd/nscache-cli@latest
```
Run the cli tool with specified cache driver connection string to operate cache.
```bash
nscache-cli memory:
```
## Proxy
### Proxy Server
Install the proxy server `nscache-server`.
```bash
go install github.com/no-src/nscache/cmd/nscache-server@latest
```
Run the proxy server with specified listen address and cache driver connection string.
```bash
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](#quick-start) section.
Or use the `nscache-cli` to connect to the proxy server and operate cache.
```bash
nscache-cli proxy://127.0.0.1:8080
```