Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/EchoTeam/mcd
Fast memcached protocol client in pure Erlang
https://github.com/EchoTeam/mcd
Last synced: 3 months ago
JSON representation
Fast memcached protocol client in pure Erlang
- Host: GitHub
- URL: https://github.com/EchoTeam/mcd
- Owner: EchoTeam
- License: bsd-2-clause
- Created: 2009-12-16T00:03:20.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2017-12-17T22:58:03.000Z (almost 7 years ago)
- Last Synced: 2024-07-19T22:44:58.242Z (4 months ago)
- Language: Erlang
- Homepage:
- Size: 293 KB
- Stars: 79
- Watchers: 36
- Forks: 54
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Erlang memcached client library.
This library provides two ways of working with memcached servers. One way is to
use a single server, as described in *#1*. Another way is to use a number of
memcached servers in a consistent hash ring mode. This is described in *#2*.## 1. RUNNING IN SINGLE-SERVER MODE
### 1.1 Starting a single memcached
The following will start an anonymous mcd client, addressable by the returned pid().
{ok, Pid} = mcd:start_link(["localhost", 11211]).
The next one will connect to the memcached server on the local host, and will
also register the mcd instance under the 'myMcd' name. See *#3*. The mcd API
can use the returned pid() and the registered name interchangeably.mcd:start_link(myMcd, []).
mcd:set(myMcd, a, b).
mcd:get(myMcd, a).### 1.2 A ChildSpec for running the mcd named 'myMcd' under a supervisor
{local_memcache,
{mcd, start_link, ['myMcd', ["localhost", 11211]]},
permanent, 10000, worker, [mcd] }## 2. RUNNING IN CLUSTERED MODE
*mcd_cluster* starts a set of mcd processess and a dispatcher attached to them.
All mcd processess and the dispatcher are linked to form a proper exit hierarchy.### 2.1 Starting memcached cluster from the command line (e.g., for testing)
mcd_cluster:start_link(mainCluster, [
{host1, ["localhost", 11211], 10},
{host2, ["localhost", 11211], 20}
]).### 2.2 A ChildSpec for running the cluster named 'mainCluster' under a supervisor
{mainCluster,
{mcd_cluster, start_link, [mainCluster, [
{host1, ["localhost"], 10},
{host2, ["localhost"], 20}
]]},
permanent, 60000, worker, [mcd_cluster]}Note: the default port for "localhost" is 11211.
### 2.3 Starting memcached cluster as an application
application:set_env(mcd, mcd_hosts, [{localhost, ["localhost"]}]).
application:set_env(mcd, mcd_buckets, [
{cluster1, {localhost, 11211}},
{cluster2, {localhost, 11211}}
]).
application:start(mcd).{error, notfound} = mcd:get(cluster1, foo).
{error, notfound} = mcd:get(cluster2, foo).## 3. USING MEMCACHED
{ok, b} = mcd:set(server, a, b).
{error, notfound} = mcd:get(server, foo).
{ok, [42]} = mcd:set(mainCluster, <<"bar">>, [42]).
{ok, [42]} = mcd:get(mainCluster, <<"bar">>).## 4. RELEASE NOTES
See [CHANGELOG.md](CHANGELOG.md)