-
Notifications
You must be signed in to change notification settings - Fork 16
/
OLD
553 lines (464 loc) · 23.2 KB
/
OLD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
README
Hi!
So what is this? It is a library in C for connecting to memcached servers
(http://danga.com/memcached/). It is also a collection of utilities designed
to work with memcached.
memcat - Copy the value of a key to standard output
memflush - Flush the contents of your servers.
memrm - Remove a key(s) from the server.
memstat - Dump the stats of your servers to standard output
memslap - Load generation utility (benchmark!)
The library is in production in many locations (upwards to 1000+ nodes).
The project has information here: http://libmemcached.org/
Documentation can be found here: http://docs.libmemcached.org/
Want to contribute? If you write more then three good patches, then I will
just ask you to commit directly to the tree. I am happy to have additional
people work on this project. Please checkout README.FIRST.
You will need a C99 compiler in order to compile this library. Currently we
actively support Linux, MacOSX, FreeBSD, and Solaris. A Windows port is
currently not supported, but one is listed on the homepage that is supported
by someone in the community.
If you are looking for answers to your questions please check out the
mailing list at:
http://lists.libmemcached.org/
Subscription information for the libmemcached mailing list can be found there.
Please report bugs here:
https://bugs.launchpad.net/libmemcached/
You can purchase support from:
http://datadifferential.com/
Cheers,
-Brian Aker
Seattle, WA.
README.FIRST
Hi!
If you are getting this code from http://launchpad.net/libmemcached then
continue reading. Otherwise these directions are not for you (well maybe...).
To obtain code from http://bazaar.launchpad.net/libmemcached you will need to
issue the following command:
bzr branch lp:libmemcached
Once the tree is cloned you will need to build the "configure" script. You
can do this by running the script:
./config/autorun.sh
It will set up all of the files you need to build libmemcached. At that
point it is just the typical "./configure; make; make test; make install"
For a tarball release do a "make dist" and for an RPM type "make rpm".
For patches, we prefer you push a branch to launchpad and then submit that
branch to be merged. For more information, see:
https://help.launchpad.net/Code/UploadingABranch
https://help.launchpad.net/Code/Review
Thanks and keep hacking!
Cheers,
-Brian
Seattle, WA.
README.win32
Hi,
So you want to know how to build libmemcached on Windows? In order to
have a single build environment you need to install mingw to get a
"unix environment" to run the configure script.
An easy way to get started is to install the msysgit fullinstall
package from: http://code.google.com/p/msysgit/downloads/list
msysgit does not contain the "autotools" needed to generate a
configure script, so you need to generate that on another box (this
should not be a problem if you're trying to build from a tar archive).
msysgit does not contain the tools to build the documentation, so you
need to add --without-docs to configure.
I'm normally building libmemcached with:
Ex:
$ ./configure --without-docs --with-memcached=../memcached/memcached.exe
$ make all install
Happy hacking,
Trond Norbye
ChangeLog
0.53 Mon Sep 26 20:50:33 PDT 2011
* Fix for FreeBSD/OpenBSD and -lm
* Added memcached_exist()
* Fix for memory when using config test.
* CLI gained --quiet
0.52 Sun Sep 11 22:16:08 PDT 2011
* Build fixes for Ubuntu/Suse.
* Fixes for OSX Lion.
* Bug fix for looping back through dns lookups under certain failures.
* Fixes related to dead server failures.
0.51 Thu Jul 21 11:08:58 PDT 2011
* memcached_callback_set() now takes its data argument as const
* Update to tests.
* Fix in parser for port number.
0.50 Mon Jun 20 10:36:57 PDT 2011
* Updates to C++ interface
* Custom free allocators need to now check for value before calling free.
* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
* Fix for stats structure.
* Updates to documentation.
* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
0.49 Thu Apr 14 08:43:37 PDT 2011
* Fix calls to auto methods so that if value is not passed in nothing bad happens.
* New parser calls for generating memcached_st objects.
* New error system.
* New flow control for messages means faster get/set calls.
* Added new documentation system.
* A behavior change has been now made that if you specify a weight for any server, we enable the weight flag and do weight balancing.
* Added MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS to simplify the setting of AUTO REJECT for servers.
0.48 Tue Mar 15 23:05:18 PDT 2011
* Fix memory leak in server parse.
* Move test framework out to be its own library (easier to work with Gearman).
0.47 Wed Feb 23 18:46:48 PST 2011
* Additional fixes for OpenBSD.
* Bug fix 677609, 456080.
* SIGPIPE fix for Linux send().
* memcapable can now test ascii or binary based on flags.
* Additional build fixes for SASL.
0.46 Mon Feb 14 10:28:01 PST 2011
* Fixes a number of corner case bugs.
* Fixes related to OpenBSD.
* Better testing for protocol version.
* Removes special case infinite wait on blocking setup.
0.45 Tue Feb 8 16:02:06 PST 2011
* Add support for systemtap
0.44 Wed Sep 22 21:57:57 PDT 2010
* Windows bug fixes.
* Hudson port support in test harness.
* Improved portability of test hanrness.
* SASL fixes.
0.43 Wed Jul 28 16:29:47 PDT 2010
* Added --args to memstat so that a greater range of values can be returned.
* Prelimanary support for Windows.
* memcached_stat_execute() merged.
0.42 Tue Jul 6 12:29:50 PDT 2010
* Mistake in libtool caused issue with library version
0.41 Wed Jun 30 13:15:19 PDT 2010
* Added --file for memcat.
* Added limemcached_ping() to libmemcached_util
* Bugfix for some cases where connect would have issues with timeout.
* Wrong value for errno given as error on an IO failure inside of poll.
* Bug fix for issue where multiple interfaces with bad DNS were not being caught.
0.40 Thu Apr 22 19:01:25 PDT 2010
* Placed retry logic in for busted resolvers
* Add an ignore for SIGPIPE to solve OSX issues.
* A couple of fixed for memcached_light server.
* Updated to debug mode to track io_wait
0.39 Tue Apr 6 12:35:13 PDT 2010
* Add support for prefix keys to binary protocol.
* Remove the undocumented call memcached_server_remove().
* The undocumented call memcached_server_by_key() now returns const.
* memcached_server_error_reset() has been deprecated.
* memcached_server_list() has been deprecated. Use memcached_server_cursor() to walk the servers found in a memcached_st() structure.
* memcached_verbosity() can now be run concurrently with other operations.
* SASL support.
* Fixes memory leak found in EJECT HOSTS.
0.38 Wed Feb 10 09:40:33 PST 2010
* C++ interface for libhashkit.
* Modified memcached_set_memory_allocators() so that it requires a context pointer.
* memcached_clone() now runs 5 times faster.
* Functions used for callbacks are now given const memcached_st.
* Added MEMCACHED_BEHAVIOR_CORK.
* memslap now creates a configuration file at ~/.memslap.cnf
* memcached_purge() now calls any callbacks registered during get execution.
* Many fixes to memslap.
* Updates for memcapable.
* Compile fixes for OpenBSD.
* Fix for possible recursive decent on IO failure.
0.37 Mon Jan 11 16:29:57 PST 2010
* Fixed build for libhashkit.
* Fixed install path regression.
* Modified RPM to strict check install.
* Added documentation for memcached_server_cursor();
* Added memcached_servers_reset().
* Modified memcached_st to remove dead cursor_server member.
0.36 Wed Jan 6 18:23:50 PST 2010
* Merged in new memslap utility.
* All of constants.h has been updated to match style (all old identifiers continue to work).
* Added first pass for libhashkit.
* Updated test Framework/extended tests.
* Random read support during replication added.
* Modified use_sort so that the option can be applied to any distribution type.
* We removed the MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE added in 0.35. Instead use memcached_behavior_set_distribution().
0.35 Mon Nov 9 11:18:33 PST 2009
* Added support for by_key operations for inc/dec methods.
* Added mget test to memslap.
* Support for compatible ketama for SpyMemcached
* Update C++ interface.
* Fix for memcp
0.34 Tue Oct 13 08:39:51 PDT 2009
* Added support for setting behavior flags on a connection pool.
* Don't increment server_failure_counter on normal disconnects.
* Added prototype for a callback based protocol parser (server side) with examples so that you could let your own application speak the memcached protocol
* Updated memcapable to test ASCII protocol.
* Changed behavior so that server can be removed at first sign of failure.
* Added memcached_server_get_last_disconnect() call
0.33 Wed Sep 23 10:11:58 PDT 2009
* Added memcapable to test servers for binary compatibility.
* Updated C++ interface. Added basic support for C++ exceptions. Added multiple constructors the memcached client object. The C++ interface now takes parameters which are C++ types (such as std::string).
* Several bug fixes for binary protocol support.
* Fixed crashing issue with dumping from memcachd server (server internals were changed without documenting change).
0.32 Tue Sep 15 15:49:09 PDT 2009
* Change of behavior where linger is only modified for no-block and then it is set to zero.
* Added Twitter's memcached_server_error() functions.
* Fix for OSX compiles in development builds.
* Updated C++ interface.
* Updated memcached_mget and memcached_mget_by_key to take a size_t as a parameter instead of an unsigned int for number_of_keys.
0.31 Fri Jul 10 09:02:50 PDT 2009
* Added support or HA via replication.
* malloc() removed for server key usage.
* Update build system.
* Added support for memcached_set_memory_allocators().
* Fixed bug in configure.ac for have_htoll.
0.30 Sun May 31 17:31:52 PDT 2009
* Added memcachd_dump command (and framework for memdump tool).
* Realigned all structures to remove padding (and line up important bits for 64bit caches.
* Remove some of sprintf() in storage calls().
* Removed printf() in stat call for unknown stat member.
* memcached_generate_hash() function added.
* Added tests to make sure all hash functions are stable.
0.29 Tue May 19 08:26:48 PDT 2009
* Fixed malloc usage to calloc for spots where we need zero filled memory.
* All code warnings now treated as errors.
* Fixes for debian packaging.
* Added new pooling mechanism.
* MEMCACHED_BEHAVIOR_NO_BLOCK no longer also sets MEMCACHED_BEHAVIOR_BUFFER_REQUESTS.
* Updated generic rpm.
0.28 Tue Apr 14 18:56:28 PDT 2009
* Fixed bug in init sructure (reapplied)
* Fixed bug in get/set by key ([email protected])
0.27 Sun Mar 29 22:33:01 PDT 2009
* Added new UDP fire-forget mode.
* Reworked performance for mget() to better make use of async protocol
* Cleaned up execution of fetch (just one set of code now)
* Fixed Jenkin's for big endian hosts.
* Updates for memstat to determine network latency.
* Updates for binary protocol.
* Many updates to documentation.
0.26 Thu Jan 29 13:05:50 PST 2009
* Fix for decrement on hash key
* Fixed assert that was catching bad memset() call in host_reset()
* Fix purge issue for blocked IO which has been stacked.
0.25 Fri Nov 28 09:59:35 PST 2008
* Jenkins HASH added.
* Update of Murmur hash code
* Support explicit weights (Robey Pointer, Evan Weaver)
* Bugfix for ketama continuum (Robey Pointer)
* New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer)
* Don't ever call stats for weighting servers, because it is unstable.
0.24 Tue Sep 16 02:59:03 PDT 2008 (never released)
* Cleanup compile warnings.
* Fix issues in partitioning by keys.
* Fixed "fail case" to make sure when calling memcached_clone() no memcached_st is over written.
* New memcached_server_by_key() method for finding a server from a key.
* memcached_server_free() was added for freeing server structures.
0.23 Sun Sep 7 08:13:59 PDT 2008
* Added strings.h header for Solaris 9
* Solaris 64bit fix.
* Support for weighted Ketama from Yin Chen.
* Fix for Chinese
* Fix for 0 length key to trigger bad key.
* Added behaviors MEMCACHED_BEHAVIOR_SND_TIMEOUT, MEMCACHED_BEHAVIOR_RCV_TIMEOUT
* Support for Binary Protocol added
0.22 Mon Jul 14 09:24:11 PDT 2008
* Fix where master key was no being checked for "bad key"
* Fixed bugs in stats output (thread output was wrong)
* Clarified MEMCACHED_BAD_KEY_PROVIDED is return for bad prefix key.
* Found a bug in Flags return (Jacek Ostrowski)
* Fixed issue with compiling on Visual Studio
0.21 Fri May 23 18:34:09 PDT 2008
* Change of char * to const char * for all key based functions.
* New MEMCACHED_CALLBACK_PREFIX_KEY added. You can now create domains for values.
* Fixed bug introducd in last version on memcp
* Fix for death of file io to call shutdown()
0.20 Mon May 5 08:34:26 PDT 2008
* New consistent distribution tests.
* Found a memory leak when a server constantly fails.
* Fix in watchpoint macro
* Changed default timeout to 1 second for poll timeouts
* Wheel uses less memory/dynamic allocation for size (no longer limited to 512 hosts by default.
* memslap memory leak fix
* Added Ketama distribution
* Fix assert.h compile problem on CentOS
0.19 Wed Apr 9 09:30:53 PDT 2008
* Documentation fix in libmemcached.
* Fixed bug where sort was always occuring on hosts
* Logic fix in branch prediction (thanks Jay!)
* Read through cached support.
* Fixed for cas by key operation.
* Fix for memcached_server_st list structures to have correct count.
* Added callback MEMCACHED_CALLBACK_DELETE_TRIGGER
* Removed function call in favor of macro (aka cut out some instructions)
0.18 Sun Mar 16 21:57:55 PDT 2008
* Fix plus tests for non-zero value objects and flags.
* MEMCACHED_HASH_MURMUR added for murmur algorithm provided.
* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT added to keep connecting from looping on timeout.
* gcc branch prediction optimizations
* Refactored entire tree to make include files cleaner
* Fixed leaked socket.
0.17 Wed Feb 27 03:33:29 PST 2008
* MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT added for connect timeout in non-block mode.
* Incompatible change in memcached_behavior_set() api. We now use a uint64_t, instead of a pointer.
* Fix for storage of values for zero.
* memcached_server_cursor() function added to API for cycling through servers.
0.16 Mon Feb 18 00:30:25 PST 2008
* Work on the UDP protocol
* Added get_by_key, set_by_key tests for C++ API
* Fix for limit_maxbytes to be 64bit in stats
* Added Atom Smasher test (scale baby, scale!)
* Servers are now sorted, meaning that servers are now ordered so that clients with the same lists, will have same distribution. (Idea from Ross McFarland). MEMCACHED_BEHAVIOR_SORT_HOSTS was added to enable this support.
* Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations. MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
* More error messages on command line tools.
* Fixed bugs in memcached_cas() operator.
* Fix to loop through interfaces
0.15 Tue Jan 29 14:55:44 PST 2008
* More work on the C++ API.
* Bug fixes around block corner cases.
* Slight performance increase in both read() and write().
0.14 Tue Jan 22 06:21:49 PST 2008
* For for bug found by Evan Weaver where increment() was not returning propper error of value was not found.
* Fix for bad null pointer on flag by Toru Maesaka.
* Refactor of all IO to just pass in the active server
* Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in support/libmemcached.pc.in (Thanks to Ross McFarland).
* Added memcached_callback_get()/set()
* First prototype of C++ interface
* Updated docs for uint16_t changes in previous release
0.13 Sun Jan 13 06:51:50 PST 2008
* MEMCACHED_BEHAVIOR_USER_DATA added to store user pointer.
* Fix for failure to connect to invalidate socket.
* Patch from Marc Rossi to add --hash option for memcp, memrm, and memcat.
* Kevin's patch for fixing EOF issues during a read.
* Toru Maesaka patch for stats mismatch
* Fix for when CRC return 0
* Fixed uint16_t issues around flags. Turns out the documentation on the protocol was wrong.
* Lingering socket fixes for FreeBSD.
* Patches from Kevin Dalley for FreeBSD 4.0
* Added multi delete functions.
* All get key returns have C style null termination
* If memcached_server_list_append is passed NULLs instead of pointers it returns NULL.
* Added memcached_fetch_execute() method
* Found a bug where memcached_fetch() was not null terminating the result value.
* memcached_behavior() now has the ability to set "buffering" so that data is not automatically flushed.
* Behavior change, buffered commands now return MEMCACHED_BUFFERED
0.12 Tue Dec 11 15:20:55 PST 2007
* Updates for consistent hashing
* IPV6 support
* Static allocation for hostname (performance)
* Fixed bug where in non-block mode all data might not have been sent on close().
* Refactor of memcached_get() to use common code.
* Change in value fetch, MEMCACHED_END is now returned when keys are no longer in the pipe.
* Fixed bug where key could be out of range of characters
* Added _by_key() methods to allow partitioning of values to particular servers.
* MEMCACHED_DEFAILT_TIMEOUT is now set to a non -1 value.
* Performance improvements in get operations.
0.11 Mon Nov 26 01:05:52 PST 2007
* Added option to memcache_behavior_set() so that poll() can be timed out.
* Fixed memory leak in case of using memcached_fetch_result() where no value was returned.
* Bug fixed in memcached_connect() which would cause servers that did not need to be enabled to be enabled (performance issue).
* Rewrote bounds checking code for get calls.
* "make test" now starts its own memcached servers.
* Added Hseih hash (MEMCACHED_HASH_HSIEH), which is showing about 7% performance over standard hash.
0.10 Tue Nov 20 23:22:31 PST 2007
* Added append binary test.
* Added MEMCACHED_BEHAVIOR_CACHE_LOOKUPS behavior so that you can save on multiple DNS lookups.
* Added CAS support, though this is optional and must be enabled during runtime.
* Added the utility memerror to create human readable error strings from memcached errors (aka convert ints to strings)
* Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
* Fixed bug where hostname might not be null terminated
* Moved to using gethostbyname_r() on Linux to solve thread safety issue
* Added -rpath support for pkg-config
* Documentation fix for hash setting using memcached_behavior_set()
0.9 Thu Nov 15 07:44:00 PST 2007
* fix for when no servers are definied.
* different buffers are now kept for different connections to speed up async efforts
* Modified increment/decrement functions to return uint64_t values
* Fixed bug in cases where zero length keys were provided
* Thread cleanup issue in memslap
* No hostname lookup on reconnect
* Fix for flag settings (was doing hex by accident!)
* Support for 1.2.4 server additions "prepend" and "append" added.
* Added memcached_version()... not sure if I will make this public or not.
0.8 Mon Nov 5 10:40:41 PST 2007
* Adding support for CRC hash method
* Adding support for UNIX sockets
* Added additional HASHing methods of FNV1_64,FNV1A_64, FNV1_32, FNV1A_32
* Added pkgconfig support (PKG_CHECK_MODULES)
* Fixed conflict with defined type in MySQL
* Added memcached_result_st structure and functions to manipulate it.
0.7 Tue Oct 30 09:24:05 PDT 2007
* Poved to poll() from select()
* Fixes in internal string class for allocation of large numbers of strings.
* memcached_mget() function now sends keys as it parses them instead of building strings as it goes.
* Propper flush now for making sure we get all IO sent even when in non-block mode.
* Added --enable-debug rule for configure
* All asserts() removed (hey this is going into production!)
0.6 Wed Oct 17 08:41:35 PDT 2007
* get value returns are now null terminated (request by Cal Heldenbrand)
* Fixed connections for more hosts then two.
* Rewrite of the read/write IO systems to handle different sorts of host failures.
* Added man pages for all functions and tools
* Raised buffer size for readinng/writing to 16K
* You can now optionally set the socket size for recv/send via memached_behavior_set/get.
0.5 Tue Oct 9 00:22:25 PDT 2007
* Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
library as well. (Eric Hodel [email protected])
* Added support script for set_benchmark
* Updated memslap to allow testing of TCP_NODELAY
* Updated memslap to support --flush (aka dump memcache servers before testing)
* Fixed bug in multiple hosts not being activated
* Added environmental variable MEMCACHED_SERVERS which can be used to set the servers list.
* fixed memcached_stat method (and now memstat works)
* server connect now happens on demand.
* Help for all command line applications
0.4 Wed Oct 3 10:28:50 PDT 2007
* Added buffered IO to write calls for keys
* Added buffered IO for reads
* memstat was broken (bad if/else on connect)
* New non-blocking IO (not default yet). Mucho faster
* Refactor of test system.
* memslap crash solved
0.3 Mon Oct 1 06:37:52 PDT 2007
* Jeff Fisher <[email protected]> provided a spec file
* Added "make rpm" around dist file
* Added support for Solaris
* Added support for DTrace
* Fixed read to be recv and write to be send
* Bug fix where memstat would core if no server was found
* Added memslap tool (load generator)
* Numerous bug fixes in library
* Added calls to library for creating host lists (see text cases to understand how to use this).
0.2 Thu Sep 27 03:46:57 PDT 2007
* First public version
TODO
- Write a shell application (?)
- Fix version in command line tools
- Write (more) test cases for all command line tools (!!!)
- Write some sort of "default" options bit for tools
- More examples using libraries
- Doxygen?
- implement more connection/hash algo
- implement compression
- Revisit get() code (look for performance enhancements)
- Add support for managing servers for clusters.
- Build embedded version
NEWS
See Changelog
THANKS
(This is not complete, please send email if I have missed someone.)
Eirik A. Nygaard - IO Patch
Cal Heldenbrand - Awesome feedback on performance
Dustin Sallings - Insight into protocol
Tobias Luetke - Performance Feedback
Andre Cruz - Help with getting the CRC Hash function to match other connectors
Brian Pontz - Hsieh hash
Tim Bunce - Perl Driver work and feedback on API
Kevin Dalley - Bug Fixes
Patrick Galbraith - work on C++ interface
Ross McFarland - Idea for sorting servers.
Marcelo Fernandez - TCP/IP timeout pieces
Yin Chen - Ketama support/weighted support
Monty Taylor - Debian Packages, Cleanup work for configure
AUTHORS
Brian Aker, [email protected] -- Client Library, Tools
Mark Atwood, -- Tools, Docs
Patrick Galbraith, -- C++ Interface
Padraig O'Sullivan, -- C++ Interface (current one)
Tim Bunce, -- Docs
Trond Norbye, [email protected] -- Binary protocol, Misc
Yin Chen, -- Ketama Work
Toru Maesaka, [email protected] -- Stats analysis
Eric Lambert, -- UDP work
Monty Taylor, -- Build Releated (Pandora)
Mingqiang Zhuang, Schooner Information Technology, Inc. -- Rewrite of memslap