| 1 | <?page |
|---|
| 2 | wintitle=>client apis |
|---|
| 3 | body<= |
|---|
| 4 | |
|---|
| 5 | <?h1 See Wiki h1?> |
|---|
| 6 | |
|---|
| 7 | <p>You probably want <a |
|---|
| 8 | href="http://code.google.com/p/memcached/wiki/Clients">the client list at the |
|---|
| 9 | wiki</a>, as it is actually kept up to date.</p> |
|---|
| 10 | |
|---|
| 11 | <?h1 Perl API h1?> |
|---|
| 12 | |
|---|
| 13 | <p> An object-oriented Perl module can be <a href="http://search.cpan.org/dist/Cache-Memcached/">found |
|---|
| 14 | on CPAN</a> as <tt>Cache::Memcached</tt> or <a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/"> |
|---|
| 15 | in Subversion</a> (<a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/ChangeLog">ChangeLog</a>). |
|---|
| 16 | (GPL/Artistic)</p> |
|---|
| 17 | |
|---|
| 18 | <p>The Perl API takes advantage of the server's opaque flag support and |
|---|
| 19 | sets its "complex" flag whenever the object being stored or retrieved |
|---|
| 20 | isn't a plain scalar. In that case, the <tt>Storable</tt> module is |
|---|
| 21 | used to freeze and thaw the value automatically going in and out of |
|---|
| 22 | the memcached.</p> |
|---|
| 23 | |
|---|
| 24 | <p>There is also Cache::Memcached::Fast---another Perl client written in C, |
|---|
| 25 | largely compatible with the original Cache::Memcached. Available on CPAN at <a |
|---|
| 26 | href="http://search.cpan.org/dist/Cache-Memcached-Fast/">http://search.cpan.org/dist/Cache-Memcached-Fast/</a>.</p> |
|---|
| 27 | |
|---|
| 28 | <?h1 PHP API h1?> |
|---|
| 29 | |
|---|
| 30 | <p>There are tons of PHP libraries available, in different conditions. But it now seems there's an official one:</p> |
|---|
| 31 | <ul> |
|---|
| 32 | <li><a href="http://pecl.php.net/package/memcache">PHP PECL memcached client</a> -- official PHP client</li> |
|---|
| 33 | </ul> |
|---|
| 34 | |
|---|
| 35 | <?h1 Python API h1?> |
|---|
| 36 | |
|---|
| 37 | <p>The Python client we'd previously released was just a prototype, and we don't have regular Python programmers on hand. The folks at Tummy.com have took over maintenance. See <a href="ftp://ftp.tummy.com/pub/python-memcached/">ftp://ftp.tummy.com/pub/python-memcached/</a> for the latest versions.</p> |
|---|
| 38 | |
|---|
| 39 | <?h1 Ruby API h1?> |
|---|
| 40 | |
|---|
| 41 | <ul> |
|---|
| 42 | <li><a href="http://www.deveiate.org/code/Ruby-MemCache.html">http://www.deveiate.org/code/Ruby-MemCache.html</a></li> |
|---|
| 43 | <li>gem install memcache-client</li> |
|---|
| 44 | <li><a href="http://blog.evanweaver.com/files/doc/fauna/memcached/">http://blog.evanweaver.com/files/doc/fauna/memcached/</a>. C backed client wrapping libmemcached. |
|---|
| 45 | </ul> |
|---|
| 46 | |
|---|
| 47 | <?h1 Java API h1?> |
|---|
| 48 | <p>A Java API is maintained by <a href="mailto:greg@meetup.com">Greg Whalin</a> from <a href="http://www.meetup.com/">Meetup.com</a>. You can find that library here: |
|---|
| 49 | |
|---|
| 50 | <ul> |
|---|
| 51 | <li><a href="http://www.whalin.com/memcached/">http://www.whalin.com/memcached/</a> -- Java API for memcached</li> |
|---|
| 52 | </ul> |
|---|
| 53 | |
|---|
| 54 | <p>An improved Java API maintained by Dustin Sallings is also available. Aggressively optimised, ability to run async, supports binary protocol, etc. See site for details: |
|---|
| 55 | |
|---|
| 56 | <ul> |
|---|
| 57 | <li><a |
|---|
| 58 | href="http://bleu.west.spy.net/~dustin/projects/memcached/">http://bleu.west.spy.net/~dustin/projects/memcached/</a> -- Improved Java API for memcached</li> |
|---|
| 59 | </ul> |
|---|
| 60 | |
|---|
| 61 | <?h1 C# API h1?> |
|---|
| 62 | <p>There are multiple C# APIs: |
|---|
| 63 | |
|---|
| 64 | <ul> |
|---|
| 65 | <li><a href="https://sourceforge.net/projects/memcacheddotnet/">https://sourceforge.net/projects/memcacheddotnet/</a></li> |
|---|
| 66 | <li><a href="http://www.codeplex.com/EnyimMemcached/">http://www.codeplex.com/EnyimMemcached/</a> - Client developed in .NET 2.0 keeping performance and extensibility in mind. (Supports consistent hashing.)</li> |
|---|
| 67 | <li><a href="http://code.google.com/p/beitmemcached/">http://code.google.com/p/beitmemcached/</a> - Client developed by BeIT with many new features.</li> |
|---|
| 68 | </ul> |
|---|
| 69 | |
|---|
| 70 | <?h1 C API h1?> |
|---|
| 71 | <p>Multiple C libraries for memcached exist:</p> |
|---|
| 72 | <ul> |
|---|
| 73 | <li><a href="http://www.outoforder.cc/projects/libs/apr_memcache/">apr_memcache</a> by Paul Querna; Apache Software License version 2.0</li> |
|---|
| 74 | <li><a href="http://tangent.org/552/libmemcached.html">libmemcached</a> by Brian Aker; BSD license. This is a new library, under heavy development.</li> |
|---|
| 75 | <li><a href="http://people.freebsd.org/~seanc/libmemcache/">libmemcache</a> by Sean Chittenden; BSD license. This is the original C library. It is no longer under active development. You should try libmemcached instead.</li> |
|---|
| 76 | </ul> |
|---|
| 77 | |
|---|
| 78 | <?h1 Postgres API h1?> |
|---|
| 79 | <p>The pgmemcache project allows |
|---|
| 80 | you to access memcache servers from Postgresql Stored Procedures and Triggers. |
|---|
| 81 | More details and downloads are available at:</p> |
|---|
| 82 | |
|---|
| 83 | <ul> |
|---|
| 84 | <li><a href="http://pgfoundry.org/projects/pgmemcache/">http://pgfoundry.org/projects/pgmemcache/</a></li> |
|---|
| 85 | </ul> |
|---|
| 86 | |
|---|
| 87 | <?h1 Chicken Scheme h1?> |
|---|
| 88 | <ul> |
|---|
| 89 | <li><a href="http://chicken.wiki.br/memcached">http://chicken.wiki.br/memcached</a> -- Chicken Scheme library</li> |
|---|
| 90 | </ul> |
|---|
| 91 | |
|---|
| 92 | <?h1 Lua h1?> |
|---|
| 93 | <ul> |
|---|
| 94 | <li><a href="http://luamemcached.luaforge.net/">http://luamemcached.luaforge.net/</a> -- Lua library</li> |
|---|
| 95 | </ul> |
|---|
| 96 | |
|---|
| 97 | <?h1 MySQL API h1?> |
|---|
| 98 | <p>The memcache_engine allows memcache to work as a storage engine to MySQL. |
|---|
| 99 | This means that you can SELECT/UPDATE/INSERTE/DELETE from it as though it is a |
|---|
| 100 | table in MySQL. |
|---|
| 101 | </p> |
|---|
| 102 | <ul> |
|---|
| 103 | <li><a href="http://tangent.org/index.pl?node_id=506">memcache_engine</a></li> |
|---|
| 104 | </ul> |
|---|
| 105 | <p>A set of MySQL UDFs (user defined functions) to work with memcached using |
|---|
| 106 | libmemcached. |
|---|
| 107 | </p> |
|---|
| 108 | <ul> |
|---|
| 109 | <li><a href="http://tangent.org/586/Memcached_Functions_for_MySQL.html">MySQL |
|---|
| 110 | UDFs for memcached</a></li> |
|---|
| 111 | </ul> |
|---|
| 112 | |
|---|
| 113 | <?h1 Protocol h1?> <p>To write a new client, check out the <a |
|---|
| 114 | href="http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt">protocol |
|---|
| 115 | docs</a>. Be aware that the most important part of the client is the |
|---|
| 116 | hashing across multiple servers, based on the key, or an optional |
|---|
| 117 | caller-provided hashing value. Feel free to join the mailing list (or |
|---|
| 118 | mail me directly) for help, inclusion in Subversion, and/or a link to your |
|---|
| 119 | client from this site.</p> |
|---|
| 120 | |
|---|
| 121 | <=body |
|---|
| 122 | page?> |
|---|