A memcached binary protocol toolkit for go.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client A bit more nil handling Aug 17, 2016
debug
gocache
server api break: Return bytes read/written on low-level send and receive Jan 16, 2014
.gitignore Ignore profiling c.out Nov 18, 2013
LICENSE Added license. Mar 18, 2013
README.markdown Fix relative links in README Jan 10, 2015
mc_constants.go Added support for OBSERVE call. Jun 4, 2013
mc_constants_test.go
mc_req.go Return nil keys, extras, and bodies instead of zero len Aug 16, 2016
mc_req_test.go api break: Return bytes read/written on low-level send and receive Jan 16, 2014
mc_res.go
mc_res_test.go api break: Return bytes read/written on low-level send and receive Jan 16, 2014
tap.go Added client tap feed support May 14, 2013
tap_test.go Test malformed bucket list in tap parsing. May 7, 2013

README.markdown

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.