Blame doc/protocol-binary.txt

Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Network Working Group                                         Stone, Ed.
Packit 4e8bc4
Internet-Draft                                           Six Apart, Ltd.
Packit 4e8bc4
Intended status: Informational                               Norbye, Ed.
Packit 4e8bc4
Expires: March 1, 2009                             Sun Microsystems, INC
Packit 4e8bc4
                                                         August 28, 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
                        Memcache Binary Protocol
Packit 4e8bc4
                     draft-stone-memcache-binary-01
Packit 4e8bc4
Packit 4e8bc4
Abstract
Packit 4e8bc4
Packit 4e8bc4
   This memo explains the memcache binary protocol for informational
Packit 4e8bc4
   purposes.
Packit 4e8bc4
Packit 4e8bc4
   Memcache is a high performance key-value cache.  It is intentionally
Packit 4e8bc4
   a dumb cache, optimized for speed only.  Applications using memcache
Packit 4e8bc4
   do not rely on it for data -- a persistent database with guaranteed
Packit 4e8bc4
   reliability is strongly recommended -- but applications can run much
Packit 4e8bc4
   faster when cached data is available in memcache.
Packit 4e8bc4
Packit 4e8bc4
Status of This Memo
Packit 4e8bc4
Packit 4e8bc4
   This Internet-Draft is submitted in full conformance with the
Packit 4e8bc4
   provisions of BCP 78 and BCP 79.
Packit 4e8bc4
Packit 4e8bc4
   Internet-Drafts are working documents of the Internet Engineering
Packit 4e8bc4
   Task Force (IETF).  Note that other groups may also distribute
Packit 4e8bc4
   working documents as Internet-Drafts.  The list of current Internet-
Packit 4e8bc4
   Drafts is at http://datatracker.ietf.org/drafts/current/.
Packit 4e8bc4
Packit 4e8bc4
   Internet-Drafts are draft documents valid for a maximum of six months
Packit 4e8bc4
   and may be updated, replaced, or obsoleted by other documents at any
Packit 4e8bc4
   time.  It is inappropriate to use Internet-Drafts as reference
Packit 4e8bc4
   material or to cite them other than as "work in progress."
Packit 4e8bc4
Packit 4e8bc4
   This Internet-Draft will expire on March 1, 2009.
Packit 4e8bc4
Packit 4e8bc4
Copyright Notice
Packit 4e8bc4
Packit 4e8bc4
   Copyright (c) 2008 IETF Trust and the persons identified as the
Packit 4e8bc4
   document authors.  All rights reserved.
Packit 4e8bc4
Packit 4e8bc4
   This document is subject to BCP 78 and the IETF Trust's Legal
Packit 4e8bc4
   Provisions Relating to IETF Documents
Packit 4e8bc4
   (http://trustee.ietf.org/license-info) in effect on the date of
Packit 4e8bc4
   publication of this document.  Please review these documents
Packit 4e8bc4
   carefully, as they describe your rights and restrictions with respect
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 1]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   to this document.  Code Components extracted from this document must
Packit 4e8bc4
   include Simplified BSD License text as described in Section 4.e of
Packit 4e8bc4
   the Trust Legal Provisions and are provided without warranty as
Packit 4e8bc4
   described in the Simplified BSD License.
Packit 4e8bc4
Packit 4e8bc4
Table of Contents
Packit 4e8bc4
Packit 4e8bc4
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
Packit 4e8bc4
     1.1.  Conventions Used In This Document . . . . . . . . . . . .   3
Packit 4e8bc4
   2.  Packet Structure  . . . . . . . . . . . . . . . . . . . . . .   3
Packit 4e8bc4
   3.  Defined Values  . . . . . . . . . . . . . . . . . . . . . . .   5
Packit 4e8bc4
     3.1.  Magic Byte  . . . . . . . . . . . . . . . . . . . . . . .   5
Packit 4e8bc4
     3.2.  Response Status . . . . . . . . . . . . . . . . . . . . .   5
Packit 4e8bc4
     3.3.  Command Opcodes . . . . . . . . . . . . . . . . . . . . .   6
Packit 4e8bc4
     3.4.  Data Types  . . . . . . . . . . . . . . . . . . . . . . .   6
Packit 4e8bc4
   4.  Commands  . . . . . . . . . . . . . . . . . . . . . . . . . .   7
Packit 4e8bc4
     4.1.  Introduction  . . . . . . . . . . . . . . . . . . . . . .   7
Packit 4e8bc4
       4.1.1.  Example . . . . . . . . . . . . . . . . . . . . . . .   7
Packit 4e8bc4
     4.2.  Get, Get Quietly, Get Key, Get Key Quietly  . . . . . . .   8
Packit 4e8bc4
       4.2.1.  Example . . . . . . . . . . . . . . . . . . . . . . .   9
Packit 4e8bc4
     4.3.  Set, Add, Replace . . . . . . . . . . . . . . . . . . . .  13
Packit 4e8bc4
       4.3.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  13
Packit 4e8bc4
     4.4.  Delete  . . . . . . . . . . . . . . . . . . . . . . . . .  15
Packit 4e8bc4
       4.4.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  16
Packit 4e8bc4
     4.5.  Increment, Decrement  . . . . . . . . . . . . . . . . . .  17
Packit 4e8bc4
       4.5.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  18
Packit 4e8bc4
     4.6.  quit  . . . . . . . . . . . . . . . . . . . . . . . . . .  20
Packit 4e8bc4
       4.6.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  21
Packit 4e8bc4
     4.7.  Flush . . . . . . . . . . . . . . . . . . . . . . . . . .  21
Packit 4e8bc4
       4.7.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  22
Packit 4e8bc4
     4.8.  noop  . . . . . . . . . . . . . . . . . . . . . . . . . .  23
Packit 4e8bc4
       4.8.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  24
Packit 4e8bc4
     4.9.  version . . . . . . . . . . . . . . . . . . . . . . . . .  24
Packit 4e8bc4
       4.9.1.  Example . . . . . . . . . . . . . . . . . . . . . . .  25
Packit 4e8bc4
     4.10. Append, Prepend . . . . . . . . . . . . . . . . . . . . .  26
Packit 4e8bc4
       4.10.1.  Example  . . . . . . . . . . . . . . . . . . . . . .  27
Packit 4e8bc4
     4.11. Stat  . . . . . . . . . . . . . . . . . . . . . . . . . .  28
Packit 4e8bc4
       4.11.1.  Example  . . . . . . . . . . . . . . . . . . . . . .  28
Packit 4e8bc4
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  30
Packit 4e8bc4
   6.  Normative References  . . . . . . . . . . . . . . . . . . . .  31
Packit 4e8bc4
   Appendix A.  Acknowledgments  . . . . . . . . . . . . . . . . . .  31
Packit 4e8bc4
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  31
Packit 4e8bc4
Packit 4e8bc4
1.  Introduction
Packit 4e8bc4
Packit 4e8bc4
   Memcache is a high performance key-value cache.  It is intentionally
Packit 4e8bc4
   a dumb cache, optimized for speed only.  Applications using memcache
Packit 4e8bc4
   should not rely on it for data -- a persistent database with
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 2]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   guaranteed reliability is strongly recommended -- but applications
Packit 4e8bc4
   can run much faster when cached data is available in memcache.
Packit 4e8bc4
Packit 4e8bc4
   Memcache was originally written to make LiveJournal [LJ] faster.  It
Packit 4e8bc4
   now powers all of the fastest web sites that you love.
Packit 4e8bc4
Packit 4e8bc4
1.1.  Conventions Used In This Document
Packit 4e8bc4
Packit 4e8bc4
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
Packit 4e8bc4
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
Packit 4e8bc4
   document are to be interpreted as described in [KEYWORDS].
Packit 4e8bc4
Packit 4e8bc4
2.  Packet Structure
Packit 4e8bc4
Packit 4e8bc4
   General format of a packet:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0/ HEADER                                                        /
Packit 4e8bc4
       /                                                               /
Packit 4e8bc4
       /                                                               /
Packit 4e8bc4
       /                                                               /
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24/ COMMAND-SPECIFIC EXTRAS (as needed)                           /
Packit 4e8bc4
      +/  (note length in the extras length header field)              /
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      m/ Key (as needed)                                               /
Packit 4e8bc4
      +/  (note length in key length header field)                     /
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      n/ Value (as needed)                                             /
Packit 4e8bc4
      +/  (note length is total body length header field, minus        /
Packit 4e8bc4
      +/   sum of the extras and key length body fields)               /
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 3]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Request header:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Magic         | Opcode        | Key length                    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| Extras length | Data type     | Reserved                      |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| Total body length                                             |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| Opaque                                                        |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| CAS                                                           |
Packit 4e8bc4
       |                                                               |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Response header:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Magic         | Opcode        | Key Length                    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| Extras length | Data type     | Status                        |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| Total body length                                             |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| Opaque                                                        |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| CAS                                                           |
Packit 4e8bc4
       |                                                               |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Header fields:
Packit 4e8bc4
Packit 4e8bc4
   Magic               Magic number.
Packit 4e8bc4
   Opcode              Command code.
Packit 4e8bc4
   Key length          Length in bytes of the text key that follows the
Packit 4e8bc4
                       command extras.
Packit 4e8bc4
   Status              Status of the response (non-zero on error).
Packit 4e8bc4
   Extras length       Length in bytes of the command extras.
Packit 4e8bc4
   Data type           Reserved for future use (Sean is using this
Packit 4e8bc4
                       soon).
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 4]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Reserved            Really reserved for future use (up for grabs).
Packit 4e8bc4
   Total body length   Length in bytes of extra + key + value.
Packit 4e8bc4
   Opaque              Will be copied back to you in the response.
Packit 4e8bc4
   CAS                 Data version check.
Packit 4e8bc4
Packit 4e8bc4
3.  Defined Values
Packit 4e8bc4
Packit 4e8bc4
3.1.  Magic Byte
Packit 4e8bc4
Packit 4e8bc4
   0x80    Request packet for this protocol version
Packit 4e8bc4
   0x81    Response packet for this protocol version
Packit 4e8bc4
Packit 4e8bc4
   Magic byte / version.  For each version of the protocol, we'll use a
Packit 4e8bc4
   different request/response value pair.  This is useful for protocol
Packit 4e8bc4
   analyzers to distinguish the nature of the packet from the direction
Packit 4e8bc4
   which it is moving.  Note, it is common to run a memcached instance
Packit 4e8bc4
   on a host that also runs an application server.  Such a host will
Packit 4e8bc4
   both send and receive memcache packets.
Packit 4e8bc4
Packit 4e8bc4
   The version should hopefully correspond only to different meanings of
Packit 4e8bc4
   the command byte.  In an ideal world, we will not change the header
Packit 4e8bc4
   format.  As reserved bytes are given defined meaning, the protocol
Packit 4e8bc4
   version / magic byte values should be incremented.
Packit 4e8bc4
Packit 4e8bc4
   Traffic analysis tools are encouraged to identify memcache packets
Packit 4e8bc4
   and provide detailed interpretation if the magic bytes are recognized
Packit 4e8bc4
   and otherwise to provide a generic breakdown of the packet.  Note,
Packit 4e8bc4
   that the key and value positions can always be identified even if the
Packit 4e8bc4
   magic byte or command opcode are not recognized.
Packit 4e8bc4
Packit 4e8bc4
3.2.  Response Status
Packit 4e8bc4
Packit 4e8bc4
   Possible values of this two-byte field:
Packit 4e8bc4
Packit 4e8bc4
   0x0000  No error
Packit 4e8bc4
   0x0001  Key not found
Packit 4e8bc4
   0x0002  Key exists
Packit 4e8bc4
   0x0003  Value too large
Packit 4e8bc4
   0x0004  Invalid arguments
Packit 4e8bc4
   0x0005  Item not stored
Packit 4e8bc4
   0x0006  Incr/Decr on non-numeric value.
Packit 4e8bc4
   0x0081  Unknown command
Packit 4e8bc4
   0x0082  Out of memory
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 5]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
3.3.  Command Opcodes
Packit 4e8bc4
Packit 4e8bc4
   Possible values of the one-byte field:
Packit 4e8bc4
Packit 4e8bc4
   0x00    Get
Packit 4e8bc4
   0x01    Set
Packit 4e8bc4
   0x02    Add
Packit 4e8bc4
   0x03    Replace
Packit 4e8bc4
   0x04    Delete
Packit 4e8bc4
   0x05    Increment
Packit 4e8bc4
   0x06    Decrement
Packit 4e8bc4
   0x07    Quit
Packit 4e8bc4
   0x08    Flush
Packit 4e8bc4
   0x09    GetQ
Packit 4e8bc4
   0x0A    No-op
Packit 4e8bc4
   0x0B    Version
Packit 4e8bc4
   0x0C    GetK
Packit 4e8bc4
   0x0D    GetKQ
Packit 4e8bc4
   0x0E    Append
Packit 4e8bc4
   0x0F    Prepend
Packit 4e8bc4
   0x10    Stat
Packit 4e8bc4
   0x11    SetQ
Packit 4e8bc4
   0x12    AddQ
Packit 4e8bc4
   0x13    ReplaceQ
Packit 4e8bc4
   0x14    DeleteQ
Packit 4e8bc4
   0x15    IncrementQ
Packit 4e8bc4
   0x16    DecrementQ
Packit 4e8bc4
   0x17    QuitQ
Packit 4e8bc4
   0x18    FlushQ
Packit 4e8bc4
   0x19    AppendQ
Packit 4e8bc4
   0x1A    PrependQ
Packit 4e8bc4
Packit 4e8bc4
   As a convention all of the commands ending with "Q" for Quiet.  A
Packit 4e8bc4
   quiet version of a command will omit responses that are considered
Packit 4e8bc4
   uninteresting.  Whether a given response is interesting is dependent
Packit 4e8bc4
   upon the command.  See the descriptions of the set commands
Packit 4e8bc4
   (Section 4.2) and set commands (Section 4.3) for examples of commands
Packit 4e8bc4
   that include quiet variants.
Packit 4e8bc4
Packit 4e8bc4
3.4.  Data Types
Packit 4e8bc4
Packit 4e8bc4
   Possible values of the one-byte field:
Packit 4e8bc4
Packit 4e8bc4
   0x00    Raw bytes
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 6]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.  Commands
Packit 4e8bc4
Packit 4e8bc4
4.1.  Introduction
Packit 4e8bc4
Packit 4e8bc4
   All communication is initiated by a request from the client, and the
Packit 4e8bc4
   server will respond to each request with zero or multiple packets for
Packit 4e8bc4
   each request.  If the status code of a response packet is non-nil,
Packit 4e8bc4
   the body of the packet will contain a textual error message.  If the
Packit 4e8bc4
   status code is nil, the command opcode will define the layout of the
Packit 4e8bc4
   body of the message.
Packit 4e8bc4
Packit 4e8bc4
4.1.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following figure illustrates the packet layout for a packet with
Packit 4e8bc4
   an error message.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 7]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Packet layout:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x01          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x09          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x4e ('N')    | 0x6f ('o')    | 0x74 ('t')    | 0x20 (' ')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x66 ('f')    | 0x6f ('o')    | 0x75 ('u')    | 0x6e ('n')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     32| 0x64 ('d')    |
Packit 4e8bc4
       +---------------+
Packit 4e8bc4
       Total 33 bytes (24 byte header, and 9 bytes value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x00
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0001
Packit 4e8bc4
   Total body   (8-11) : 0x00000009
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value        (24-32): The textual string "Not found"
Packit 4e8bc4
Packit 4e8bc4
4.2.  Get, Get Quietly, Get Key, Get Key Quietly
Packit 4e8bc4
Packit 4e8bc4
   Request:
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 8]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Response (if found):
Packit 4e8bc4
Packit 4e8bc4
      MUST have extras.
Packit 4e8bc4
      MAY have key.
Packit 4e8bc4
      MAY have value.
Packit 4e8bc4
Packit 4e8bc4
   o  4 byte flags
Packit 4e8bc4
Packit 4e8bc4
   Extra data for the get commands:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Flags                                                         |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 4 bytes
Packit 4e8bc4
Packit 4e8bc4
   The get command gets a single key.  The getq command is both mum on
Packit 4e8bc4
   cache miss and quiet, holding its response until a non-quiet command
Packit 4e8bc4
   is issued.  Getk and getkq differs from get and getq by adding the
Packit 4e8bc4
   key into the response packet.
Packit 4e8bc4
Packit 4e8bc4
   You're not guaranteed a response to a getq/getkq cache hit until you
Packit 4e8bc4
   send a non-getq/getkq command later, which uncorks the server and
Packit 4e8bc4
   bundles up IOs to send to the client in one go.
Packit 4e8bc4
Packit 4e8bc4
   Clients should implement multi-get (still important for reducing
Packit 4e8bc4
   network roundtrips!) as n pipelined requests, the first n-1 being
Packit 4e8bc4
   getq/getkq, the last being a regular get/getk.  That way you're
Packit 4e8bc4
   guaranteed to get a response, and you know when the server's done.
Packit 4e8bc4
   You can also do the naive thing and send n pipelined get/getks, but
Packit 4e8bc4
   then you could potentially get back a lot of "NOT_FOUND" error code
Packit 4e8bc4
   packets.  Alternatively, you can send 'n' getq/getkqs, followed by a
Packit 4e8bc4
   'noop' command.
Packit 4e8bc4
Packit 4e8bc4
4.2.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   To request the data associated with the key "Hello" the following
Packit 4e8bc4
   fields must be specified in the packet.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                 [Page 9]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   get request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x48 ('H')    | 0x65 ('e')    | 0x6c ('l')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x6f ('o')    |
Packit 4e8bc4
       +---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 29 bytes (24 byte header, and 5 bytes key)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x00
Packit 4e8bc4
   Key length   (2,3)  : 0x0005
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000005
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key          (24-29): The textual string: "Hello"
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   If the item exist on the server the following packet is returned,
Packit 4e8bc4
   otherwise a packet with status code != 0 will be returned (see
Packit 4e8bc4
   Introduction (Section 4.1))
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 10]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   get/getq response:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x04          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x09          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x01          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0xde          | 0xad          | 0xbe          | 0xef          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x57 ('W')    | 0x6f ('o')    | 0x72 ('r')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     32| 0x64 ('d')    |
Packit 4e8bc4
       +---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 33 bytes (24 byte header, 4 byte extras and 5 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x00
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x04
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000009
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000001
Packit 4e8bc4
   Extras              :
Packit 4e8bc4
     Flags      (24-27): 0xdeadbeef
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value        (28-32): The textual string "World"
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 11]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   getk/getkq response:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x04          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x09          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x01          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0xde          | 0xad          | 0xbe          | 0xef          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x48 ('H')    | 0x65 ('e')    | 0x6c ('l')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     32| 0x6f ('o')    | 0x57 ('W')    | 0x6f ('o')    | 0x72 ('r')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     36| 0x6c ('l')    | 0x64 ('d')    |
Packit 4e8bc4
       +---------------+---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 38 bytes (24 byte header, 4 byte extras, 5 byte key
Packit 4e8bc4
                       and 5 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x00
Packit 4e8bc4
   Key length   (2,3)  : 0x0005
Packit 4e8bc4
   Extra length (4)    : 0x04
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x0000000E
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000001
Packit 4e8bc4
   Extras              :
Packit 4e8bc4
     Flags      (24-27): 0xdeadbeef
Packit 4e8bc4
   Key          (28-32): The textual string: "Hello"
Packit 4e8bc4
   Value        (33-37): The textual string: "World"
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 12]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.3.  Set, Add, Replace
Packit 4e8bc4
Packit 4e8bc4
      MUST have extras.
Packit 4e8bc4
      MUST have key.
Packit 4e8bc4
      MUST have value.
Packit 4e8bc4
Packit 4e8bc4
   o  4 byte flags
Packit 4e8bc4
   o  4 byte expiration time
Packit 4e8bc4
Packit 4e8bc4
   Extra data for set/add/replace:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Flags                                                         |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| Expiration                                                    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 8 bytes
Packit 4e8bc4
Packit 4e8bc4
   If the Data Version Check (CAS) is nonzero, the requested operation
Packit 4e8bc4
   MUST only succeed if the item exists and has a CAS value identical to
Packit 4e8bc4
   the provided value.
Packit 4e8bc4
Packit 4e8bc4
   Add MUST fail if the item already exist.
Packit 4e8bc4
Packit 4e8bc4
   Replace MUST fail if the item doesn't exist.
Packit 4e8bc4
Packit 4e8bc4
   Set should store the data unconditionally if the item exists or not.
Packit 4e8bc4
Packit 4e8bc4
   Quiet mutations only return responses on failure.  Success is
Packit 4e8bc4
   considered the general case and is suppressed when in quiet mode, but
Packit 4e8bc4
   errors should not be allowed to go unnoticed.
Packit 4e8bc4
Packit 4e8bc4
4.3.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following figure shows an add-command for
Packit 4e8bc4
Packit 4e8bc4
      Key: "Hello"
Packit 4e8bc4
      Value: "World"
Packit 4e8bc4
      Flags: 0xdeadbeef
Packit 4e8bc4
      Expiry: in two hours
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 13]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Add request:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x02          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x08          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x12          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0xde          | 0xad          | 0xbe          | 0xef          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x00          | 0x00          | 0x1c          | 0x20          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     32| 0x48 ('H')    | 0x65 ('e')    | 0x6c ('l')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     36| 0x6f ('o')    | 0x57 ('W')    | 0x6f ('o')    | 0x72 ('r')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     40| 0x6c ('l')    | 0x64 ('d')    |
Packit 4e8bc4
       +---------------+---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 42 bytes (24 byte header, 8 byte extras, 5 byte key and
Packit 4e8bc4
                       5 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x02
Packit 4e8bc4
   Key length   (2,3)  : 0x0005
Packit 4e8bc4
   Extra length (4)    : 0x08
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000012
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              :
Packit 4e8bc4
     Flags      (24-27): 0xdeadbeef
Packit 4e8bc4
     Expiry     (28-31): 0x00001c20
Packit 4e8bc4
   Key          (32-36): The textual string "Hello"
Packit 4e8bc4
   Value        (37-41): The textual string "World"
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 14]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.  If the command
Packit 4e8bc4
   succeeds, the CAS value for the item is returned in the CAS-field of
Packit 4e8bc4
   the packet.
Packit 4e8bc4
Packit 4e8bc4
   Successful add response:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x02          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x01          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x02
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000000
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000001
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
4.4.  Delete
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
   Delete the item with the specific key.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 15]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.4.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following figure shows a delete message for the item "Hello".
Packit 4e8bc4
Packit 4e8bc4
   Delete request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x04          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x48 ('H')    | 0x65 ('e')    | 0x6c ('l')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x6f ('o')    |
Packit 4e8bc4
       +---------------+
Packit 4e8bc4
Packit 4e8bc4
       Total 29 bytes (24 byte header, 5 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x04
Packit 4e8bc4
   Key length   (2,3)  : 0x0005
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000005
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : The textual string "Hello"
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 16]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.5.  Increment, Decrement
Packit 4e8bc4
Packit 4e8bc4
      MUST have extras.
Packit 4e8bc4
      MUST have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
   o  8 byte value to add / subtract
Packit 4e8bc4
   o  8 byte initial value (unsigned)
Packit 4e8bc4
   o  4 byte expiration time
Packit 4e8bc4
Packit 4e8bc4
   Extra data for incr/decr:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Amount to add                                                 |
Packit 4e8bc4
       |                                                               |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| Initial value                                                 |
Packit 4e8bc4
       |                                                               |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| Expiration                                                    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 20 bytes
Packit 4e8bc4
Packit 4e8bc4
   These commands will either add or remove the specified amount to the
Packit 4e8bc4
   requested counter.
Packit 4e8bc4
Packit 4e8bc4
   If the counter does not exist, one of two things may happen:
Packit 4e8bc4
Packit 4e8bc4
   1.  If the expiration value is all one-bits (0xffffffff), the
Packit 4e8bc4
       operation will fail with NOT_FOUND.
Packit 4e8bc4
   2.  For all other expiration values, the operation will succeed by
Packit 4e8bc4
       seeding the value for this key with the provided initial value to
Packit 4e8bc4
       expire with the provided expiration time.  The flags will be set
Packit 4e8bc4
       to zero.
Packit 4e8bc4
Packit 4e8bc4
   incr/decr response body:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 64-bit unsigned response.                                     |
Packit 4e8bc4
       |                                                               |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 8 bytes
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 17]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.5.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following figure shows an incr-command for
Packit 4e8bc4
Packit 4e8bc4
      Key: "counter"
Packit 4e8bc4
      Delta: 0x01
Packit 4e8bc4
      Initial: 0x00
Packit 4e8bc4
      Expiry: in two hours
Packit 4e8bc4
Packit 4e8bc4
   Increment request:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 18]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x05          | 0x00          | 0x07          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x14          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x1b          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x00          | 0x00          | 0x00          | 0x01          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     32| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     36| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     40| 0x00          | 0x00          | 0x1c          | 0x20          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     44| 0x63 ('c')    | 0x6f ('o')    | 0x75 ('u')    | 0x6e ('n')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     48| 0x74 ('t')    | 0x65 ('e')    | 0x72 ('r')    |
Packit 4e8bc4
       +---------------+---------------+---------------+
Packit 4e8bc4
       Total 51 bytes (24 byte header, 20 byte extras, 7 byte key)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x05
Packit 4e8bc4
   Key length   (2,3)  : 0x0007
Packit 4e8bc4
   Extra length (4)    : 0x14
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x0000001b
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              :
Packit 4e8bc4
     delta      (24-31): 0x0000000000000001
Packit 4e8bc4
     initial    (32-39): 0x0000000000000000
Packit 4e8bc4
     expiration (40-43): 0x00001c20
Packit 4e8bc4
   Key                 : Textual string "counter"
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 19]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   If the key doesn't exist, the server will respond with the initial
Packit 4e8bc4
   value.  If not the incremented value will be returned.  Let's assume
Packit 4e8bc4
   that the key didn't exist, so the initial value is returned.
Packit 4e8bc4
Packit 4e8bc4
   Increment response:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x05          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x08          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 32 bytes (24 byte header, 8 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x05
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000008
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000005
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : 0x0000000000000000
Packit 4e8bc4
Packit 4e8bc4
4.6.  quit
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST NOT have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 20]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Close the connection to the server.
Packit 4e8bc4
Packit 4e8bc4
4.6.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   Quit request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x07          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x07
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000000
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.  The server will then
Packit 4e8bc4
   close the connection.
Packit 4e8bc4
Packit 4e8bc4
4.7.  Flush
Packit 4e8bc4
Packit 4e8bc4
      MAY have extras.
Packit 4e8bc4
      MUST NOT have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 21]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   o  4 byte expiration time
Packit 4e8bc4
Packit 4e8bc4
   Extra data for flush:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| Expiration                                                    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     Total 4 bytes
Packit 4e8bc4
Packit 4e8bc4
   Flush the items in the cache now or some time in the future as
Packit 4e8bc4
   specified by the expiration field.  See the documentation of the
Packit 4e8bc4
   textual protocol for the full description on how to specify the
Packit 4e8bc4
   expiration time.
Packit 4e8bc4
Packit 4e8bc4
4.7.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   To flush the cache (delete all items) in two hours, the set the
Packit 4e8bc4
   following values in the request
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 22]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Flush request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x08          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x04          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x04          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x00          | 0x00          | 0x1c          | 0x20          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 28 bytes (24 byte header, 4 byte body)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x08
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x04
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000004
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              :
Packit 4e8bc4
      Expiry    (24-27): 0x00001c20
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.
Packit 4e8bc4
Packit 4e8bc4
4.8.  noop
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST NOT have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
   Used as a keep alive.  Flushes outstanding getq/getkq's.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 23]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.8.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   Noop request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x0a          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x0a
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000000
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.
Packit 4e8bc4
Packit 4e8bc4
4.9.  version
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST NOT have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
   Request the server version.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 24]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   The server responds with a packet containing the version string in
Packit 4e8bc4
   the body with the following format: "x.y.z"
Packit 4e8bc4
Packit 4e8bc4
4.9.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   Version request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x0b          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x0b
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000000
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 25]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Version response:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x0b          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x31 ('1')    | 0x2e ('.')    | 0x33 ('3')    | 0x2e ('.')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x31 ('1')    |
Packit 4e8bc4
       +---------------+
Packit 4e8bc4
       Total 29 bytes (24 byte header, 5 byte body)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x0b
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000005
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : Textual string "1.3.1"
Packit 4e8bc4
Packit 4e8bc4
4.10.  Append, Prepend
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MUST have key.
Packit 4e8bc4
      MUST have value.
Packit 4e8bc4
Packit 4e8bc4
   These commands will either append or prepend the specified value to
Packit 4e8bc4
   the requested key.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 26]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.10.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following example appends '!' to the 'Hello' key.
Packit 4e8bc4
Packit 4e8bc4
   Append request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x0e          | 0x00          | 0x05          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x06          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x48 ('H')    | 0x65 ('e')    | 0x6c ('l')    | 0x6c ('l')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x6f ('o')    | 0x21 ('!')    |
Packit 4e8bc4
       +---------------+---------------+
Packit 4e8bc4
       Total 30 bytes (24 byte header, 5 byte key, 1 byte value)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x0e
Packit 4e8bc4
   Key length   (2,3)  : 0x0005
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000006
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key          (24-28): The textual string "Hello"
Packit 4e8bc4
   Value        (29)   : "!"
Packit 4e8bc4
Packit 4e8bc4
   The response-packet contains no extra data, and the result of the
Packit 4e8bc4
   operation is signaled through the status code.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 27]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
4.11.  Stat
Packit 4e8bc4
Packit 4e8bc4
      MUST NOT have extras.
Packit 4e8bc4
      MAY have key.
Packit 4e8bc4
      MUST NOT have value.
Packit 4e8bc4
Packit 4e8bc4
   Request server statistics.  Without a key specified the server will
Packit 4e8bc4
   respond with a "default" set of statistics information.  Each piece
Packit 4e8bc4
   of statistical information is returned in its own packet (key
Packit 4e8bc4
   contains the name of the statistical item and the body contains the
Packit 4e8bc4
   value in ASCII format).  The sequence of return packets is terminated
Packit 4e8bc4
   with a packet that contains no key and no value.
Packit 4e8bc4
Packit 4e8bc4
4.11.1.  Example
Packit 4e8bc4
Packit 4e8bc4
   The following example requests all statistics from the server
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 28]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Stat request:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x80          | 0x10          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
       Total 24 bytes
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x80
Packit 4e8bc4
   Opcode       (1)    : 0x10
Packit 4e8bc4
   Key length   (2,3)  : 0x0000
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Reserved     (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000000
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : None
Packit 4e8bc4
   Value               : None
Packit 4e8bc4
Packit 4e8bc4
   The server will send each value in a separate packet with an "empty"
Packit 4e8bc4
   packet (no key / no value) to terminate the sequence.  Each of the
Packit 4e8bc4
   response packets look like the following example:
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 29]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Stat response:
Packit 4e8bc4
Packit 4e8bc4
     Byte/     0       |       1       |       2       |       3       |
Packit 4e8bc4
        /              |               |               |               |
Packit 4e8bc4
       |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      0| 0x81          | 0x10          | 0x00          | 0x03          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      4| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
      8| 0x00          | 0x00          | 0x00          | 0x07          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     12| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     16| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     20| 0x00          | 0x00          | 0x00          | 0x00          |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     24| 0x70 ('p')    | 0x69 ('i')    | 0x64 ('d')    | 0x33 ('3')    |
Packit 4e8bc4
       +---------------+---------------+---------------+---------------+
Packit 4e8bc4
     28| 0x30 ('0')    | 0x37 ('7')    | 0x38 ('8')    |
Packit 4e8bc4
       +---------------+---------------+---------------+
Packit 4e8bc4
       Total 31 bytes (24 byte header, 3 byte key, 4 byte body)
Packit 4e8bc4
Packit 4e8bc4
   Field        (offset) (value)
Packit 4e8bc4
   Magic        (0)    : 0x81
Packit 4e8bc4
   Opcode       (1)    : 0x10
Packit 4e8bc4
   Key length   (2,3)  : 0x0003
Packit 4e8bc4
   Extra length (4)    : 0x00
Packit 4e8bc4
   Data type    (5)    : 0x00
Packit 4e8bc4
   Status       (6,7)  : 0x0000
Packit 4e8bc4
   Total body   (8-11) : 0x00000007
Packit 4e8bc4
   Opaque       (12-15): 0x00000000
Packit 4e8bc4
   CAS          (16-23): 0x0000000000000000
Packit 4e8bc4
   Extras              : None
Packit 4e8bc4
   Key                 : The textual string "pid"
Packit 4e8bc4
   Value               : The textual string "3078"
Packit 4e8bc4
Packit 4e8bc4
5.  Security Considerations
Packit 4e8bc4
Packit 4e8bc4
   Memcache has few authentication and no security layers whatsoever.
Packit 4e8bc4
   It is RECOMMENDED that memcache be deployed strictly on closed,
Packit 4e8bc4
   protected, back-end networks within a single data center, within a
Packit 4e8bc4
   single cluster of servers, or even on a single host, providing shared
Packit 4e8bc4
   caching for multiple applications.  Memcache MUST NOT be made
Packit 4e8bc4
   available on a public network.
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 30]
Packit 4e8bc4

Packit 4e8bc4
Internet-Draft          Memcache Binary Protocol             August 2008
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   SASL is supported as an authentication mechanism.  See the wiki for
Packit 4e8bc4
   more information.
Packit 4e8bc4
Packit 4e8bc4
6.  Normative References
Packit 4e8bc4
Packit 4e8bc4
   [KEYWORDS]
Packit 4e8bc4
              Bradner, S., "Key words for use in RFCs to Indicate
Packit 4e8bc4
              Requirement Levels", BCP 14, RFC 2119, March 1997.
Packit 4e8bc4
Packit 4e8bc4
   [LJ]       Danga Interactive, "LJ NEEDS MOAR SPEED", 10 1999.
Packit 4e8bc4
Packit 4e8bc4
Appendix A.  Acknowledgments
Packit 4e8bc4
Packit 4e8bc4
   Thanks to Brad Fitzpatrick, Anatoly Vorobey, Steven Grimm, and Dustin
Packit 4e8bc4
   Sallings, for their work on the memcached server.
Packit 4e8bc4
Packit 4e8bc4
   Thanks to Sean Chittenden, Jonathan Steinert, Brian Aker, Evan
Packit 4e8bc4
   Martin, Nathan Neulinger, Eric Hodel, Michael Johnson, Paul Querna,
Packit 4e8bc4
   Jamie McCarthy, Philip Neustrom, Andrew O'Brien, Josh Rotenberg,
Packit 4e8bc4
   Robin H.  Johnson, Tim Yardley, Paolo Borelli, Eli Bingham, Jean-
Packit 4e8bc4
   Francois Bustarret, Paul G, Paul Lindner, Alan Kasindorf, Chris
Packit 4e8bc4
   Goffinet, Tomash Brechko, and others for their work reporting bugs
Packit 4e8bc4
   and maintaining memcached client libraries and bindings in many
Packit 4e8bc4
   languages.
Packit 4e8bc4
Packit 4e8bc4
Authors' Addresses
Packit 4e8bc4
Packit 4e8bc4
   Aaron Stone (editor)
Packit 4e8bc4
   Six Apart, Ltd.
Packit 4e8bc4
   548 4th Street
Packit 4e8bc4
   San Francisco, CA  94107
Packit 4e8bc4
   USA
Packit 4e8bc4
Packit 4e8bc4
   Email: aaron@serendipity.palo-alto.ca.us
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
   Trond Norbye (editor)
Packit 4e8bc4
   Sun Microsystems, INC
Packit 4e8bc4
   Haakon VII g. 7B
Packit 4e8bc4
   Trondheim  NO-7485 Trondheim
Packit 4e8bc4
   Norway
Packit 4e8bc4
Packit 4e8bc4
   Email: trond.norbye@sun.com
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Packit 4e8bc4
Stone & Norbye            Expires March 1, 2009                [Page 31]