Simple interface for caching
Cachego requires Go 1.9 or later.
go get github.com/faabiosr/cachego
If you want to get an specific version, please use the example below:
go get gopkg.in/faabiosr/cachego.v0
package main
import (
"github.com/faabiosr/cachego"
"github.com/bradfitz/gomemcache/memcache"
)
var cache cachego.Cache
func init() {
cache = cachego.NewMemcached(memcached.New("localhost:11211"))
}
package main
import (
"github.com/faabiosr/cachego"
"gopkg.in/redis.v4"
)
var cache cachego.Cache
func init() {
cache = cachego.NewRedis(
redis.NewClient(&redis.Options{
Addr: ":6379",
}),
)
}
package main
import (
"github.com/faabiosr/cachego"
)
var cache cachego.Cache
func init() {
cache = cachego.NewFile(
"/cache-dir/",
)
}
package main
import (
"github.com/faabiosr/cachego"
)
var cache cachego.Cache
func init() {
cache = NewMap()
}
package main
import (
"github.com/faabiosr/cachego"
"gopkg.in/mgo.v2"
)
var cache cachego.Cache
func init() {
session, _ := mgo.Dial(address)
cache = cachego.NewMongo(
session.DB("cache").C("cache"),
)
}
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
)
var cache cachego.Cache
func init() {
db, _ := sql.Open("sqlite3", "./cache.db")
cache, _ = NewSqlite3(db, "cache")
}
package main
import (
"github.com/faabiosr/cachego"
)
var cache cachego.Cache
func init() {
cache = NewSyncMap()
}
package main
import (
"github.com/faabiosr/cachego"
bolt "github.com/coreos/bbolt"
)
var cache cachego.Cache
func init() {
db, _ := bolt.Open("cache.db", 0600, nil)
cache = NewBolt(db)
}
package main
import (
"github.com/faabiosr/cachego"
)
var cache cachego.Cache
func init() {
memcached := cachego.NewMemcached(
memcached.New("localhost:11211"),
)
redis := cachego.NewRedis(
redis.NewClient(&redis.Options{
Addr: ":6379",
}),
)
file := cachego.NewFile(
"/cache-dir/"
)
cache = cachego.NewChain(
cachego.NewMap(),
memcached,
redis,
file,
)
}
package main
import (
"github.com/faabiosr/cachego"
"github.com/bradfitz/gomemcache/memcache"
)
func main() {
cache.Save("foo", "bar")
cache.Save("john", "doe")
value, err := cache.Fetch("foo")
multiple := cache.FetchMulti([]string{"foo", "john"})
if cache.Contains("foo") {
cache.Delete("foo")
}
cache.Flush()
}
Read the full documentation at https://godoc.org/github.com/faabiosr/cachego.
- Install docker and docker-compose
- Install go dep
// Clean up
$ make clean
//Run tests and generates html coverage file
make cover
// Up the docker containers for testing
make docker
// Format all go files
make fmt
//Run linters
make lint
// Run tests
make test
This project is released under the MIT licence. See LICENSE for more details.