# run on python3.4, with python3.4 branch of `https://github.com/johbo/gevent.git`_ . import gevent import gevent.monkey import hiredis gevent.monkey.patch_all() d = {} def process(req): # only support get/set cmd = req[0].lower() if cmd==b'set': d[req[1]] = req[2] return b"+OK\r\n" elif cmd==b'get': v = d.get(req[1]) if v is None: return b'$-1\r\n' else: return b'$1\r\n1\r\n' #return '$%d\r\n%s\r\n' % (len(v), v) else: print(cmd) raise NotImplemented() def handle(sock, addr): reader = hiredis.Reader() while True: buf = sock.recv(4096) if not buf: return reader.feed(buf) req = reader.gets() while req != False: sock.sendall(process(req)) req = reader.gets() from gevent.server import StreamServer print('serving on 0.0.0.0:3000') StreamServer(('0.0.0.0', 3000), handle).serve_forever()