public
Description: A memcached server in go
Homepage:
Clone URL: git://github.com/dustin/gomemcached.git
name age message
file .gitignore Sun Nov 15 02:40:05 -0800 2009 Update the .gitignore for 386 machines [dustin]
file Makefile Fri Nov 13 19:29:51 -0800 2009 Changed makefile to be more cross platform-ish. [Matt Kemp]
file README.markdown Thu Nov 12 15:13:52 -0800 2009 Added a picture. [dustin]
file byte_manipulation.go Thu Nov 12 23:07:36 -0800 2009 Change ReadInt function names to ReadUint since... [dustin]
file gocache.go Thu Nov 12 10:23:48 -0800 2009 Configurable binding port. Closes #1 [dustin]
file mc_conn_handler.go Thu Nov 12 23:07:36 -0800 2009 Change ReadInt function names to ReadUint since... [dustin]
file mc_constants.go Thu Nov 12 08:50:46 -0800 2009 Basic map storage. Closes #2 [dustin]
file mc_storage.go Thu Nov 12 23:07:36 -0800 2009 Change ReadInt function names to ReadUint since... [dustin]
README.markdown

gomemcached

This is a memcached server in go.

It's currently exceedingly simple, but I'll make it do something useful over time as I play with the language more.

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.