gitea/vendor/github.com/couchbase/gomemcached
2019-12-18 21:03:26 -05:00
..
client chore: update github.com/couchbase/gomemcached and github.com/couchbase/go-couchbase (#9419) 2019-12-18 21:03:26 -05:00
.gitignore Use Go1.11 module (#5743) 2019-03-27 19:15:23 +08:00
flexibleFraming.go chore: update github.com/couchbase/gomemcached and github.com/couchbase/go-couchbase (#9419) 2019-12-18 21:03:26 -05:00
LICENSE add other session providers (#5963) 2019-02-05 11:52:51 -05:00
mc_constants.go chore: update github.com/couchbase/gomemcached and github.com/couchbase/go-couchbase (#9419) 2019-12-18 21:03:26 -05:00
mc_req.go chore: update github.com/couchbase/gomemcached and github.com/couchbase/go-couchbase (#9419) 2019-12-18 21:03:26 -05:00
mc_res.go chore: update github.com/couchbase/gomemcached and github.com/couchbase/go-couchbase (#9419) 2019-12-18 21:03:26 -05:00
README.markdown Use Go1.11 module (#5743) 2019-03-27 19:15:23 +08:00
tap.go add other session providers (#5963) 2019-02-05 11:52:51 -05:00

gomemcached

This is a memcached binary protocol toolkit in go.

It provides client and server functionality as well as a little sample
server showing how I might make a server if I valued purity over
performance.

Server Design

overview

The basic design can be seen in gocache. A storage
server
is run as a goroutine that receives a MCRequest on
a channel, and then issues an MCResponse to a channel contained
within the request.

Each connection is a separate goroutine, of course, and is responsible
for all IO for that connection until the connection drops or the
dataServer decides it's stupid and sends a fatal response back over
the channel.

There is currently no work at all in making the thing perform (there
are specific areas I know need work). This is just my attempt to
learn the language somewhat.