Blame doc/protocol-binary.txt

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