mc.go: A Go client for Memcached
This is a (pure) Go client for Memcached. It supports
the binary Memcached protocol and SASL authentication. It's thread-safe.
It allows connections to entire Memcached clusters and supports connection
pools, timeouts, and failover.
Install
$ go get github.com/memcachier/mc
Use
import "github.com/memcachier/mc"
func main() {
c := mc.NewMC("localhost:11211", "username", "password")
defer c.Quit()
exp := 3600
cas, err = cn.Set("foo", "bar", flags, exp, cas)
if err != nil {
...
}
val, flags, cas, err = cn.Get("foo")
if err != nil {
...
}
err = cn.Del("foo")
if err != nil {
...
}
}
Missing Feature
There is nearly coverage of the Memcached protocol.
The biggest missing protocol feature is support for multi_get
and other
batched operations.
There is also no support for asynchronous IO.
Performance
Right now we use a single per-connection mutex and don't support pipe-lining any
operations. There is however support for connection pools which should make up
for it.
Get involved!
We are happy to receive bug reports, fixes, documentation enhancements,
and other improvements.
Please report bugs via the
github issue tracker.
Master git repository:
git clone git://github.com/memcachier/mc.git
Licensing
This library is MIT-licensed.
Authors
This library is written and maintained by MemCachier.
It was originally written by Blake Mizerany.