d77176912b
* Migrate to go modules * make vendor * Update mvdan.cc/xurls * make vendor * Update code.gitea.io/git * make fmt-check * Update github.com/go-sql-driver/mysql * make vendor |
||
---|---|---|
.. | ||
client | ||
.gitignore | ||
LICENSE | ||
mc_constants.go | ||
mc_req.go | ||
mc_res.go | ||
README.markdown | ||
tap.go |
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
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.