Work around error with zlib library compressor
[memstore.git] / memcache / README.md
1 Memcache
2 ========
3
4 _Library for memcached protocol_
5
6 Author: Kevin Rosenberg <kevin@rosenberg.net>, based on the
7 `cl-memcached` library by Abhijit 'quasi' Rao and 
8 Chaitanya Gupta .
9
10 Date Started: July 1, 2011
11
12 Overview
13 --------
14
15 <<<<<<< HEAD
16 This package is based on the `cl-memcached` library.
17 It is substantially modified for use with the memstore
18 package. The primary areas of additional functionality
19 are:
20 =======
21 This package is based on the cl-memcached library.  It is
22 substantially modified for use with the
23 [memstore](http://memstore.b9.com) library. The primary areas of
24 additional functionality are:
25 >>>>>>> ef7ec94c1f67f7e0733774564a4ed848ff169eba
26
27 * Support for flags field with get and set functions.
28   This is required as memstore stores bit flags denoting
29   how the data is serialized. That information is required
30   to deserialize the data.
31
32 * Support for additional memcached functionality, such as
33   the gets command for retrieving CAS identifiers. The CAS
34   unique ID is used for the added `:cas` storage command.
35   Other storage commands newly supported are `:append` and 
36   `:prepend`.
37
38 * All communication now uses `mc-send-command` function with
39   transparently supports writing strings with `write-byte`.
40   This allows `usocket` to be used on other Lisp implementations
41   besides AllegroCL. Because cl-memcached used `write-string`
42   with usocket-stream, only AllegroCL was supported.
43   By sending all data as (unsigned-byte 8), all Lisp implementions
44   supported by `usocket` are now supported with `memcached`.
45
46 * Encapsulated reading and writing to socket stream to avoid
47   handling \\#return characters in high-level code.
48
49 * Changes to support the change in statistics fields with membase.
50   Some fields were no longer present. Also, membase 1.7 has
51   187 statistics fields versus the 20 fields supported in
52   `cl-memcached`. New function `mc-get-stat` allows to retrieving
53   any statistics field by name.
54
55 * More robust `print-object` functions to avoid errors if fields
56   in statistics are not present.
57
58 * Removed compatibility functions in `compat.lisp` by using the
59   [`kmrcl`](http://gitpub.b9.com/kmrcl.git) library to provide those
60   functions as well as utilitizing other `kmrcl` functions to simplify
61   code.
62
63 * Added functions to support all memcached API commands,
64   such as `flush_all` and `version`.
65
66 * Support for the `moreply` command argument accepted by
67   many commands.
68
69 * Support the `noreply` argument that many API commands accept.
70
71 * Write nearly the entire code base for improved
72   clarity, robustness, and efficiency.