Memcache.Client
===============
[![Build Status](https://travis-ci.org/gialib/memcache_ex.svg)](https://travis-ci.org/gialib/memcache_ex)
`Memcache.Client` is a memcached client library utilizing the memcached binary protocol.
Installing
----------
You can install `Memcache.Client` by adding it as a dependecy to your
project's `mix.exs` file:
```elixir
defp deps do
[
{:memcache_ex, "~> 1.0.0"}
]
end
```
Also, remember to add `:memcache_ex` to your `:applications` list
if you wish that the application is started automatically.
Examples
--------
### Get value for a key:
```elixir
response = Memcache.Client.get("key")
case response.status do
:ok ->
{:ok, response.value}
status ->
{:error, status}
end
```
### Get values for multiple keys with a single operation:
```elixir
responses = Memcache.Client.mget(["key1", "key2", "key3"]) |> Enum.into([])
```
As you can see, the multi get operation returns a stream that needs to
be consumed (for example using `Enum.into`) in order to receive the
responses.
### Set value for a key:
```elixir
response = Memcache.Client.set("key", "value")
case response.status do
:ok ->
{:ok, response.cas}
status ->
{:error, status}
end
```
You can also do a multiset operation similar to the multiget above.
### Transcoders
`Memcache.Client` also supports transcoders for serializing and
deserializing the data. The default transcoder
`Memcache.Client.Transcoder.Raw` expects the value to be a
binary. This transoder does not do anything but check that when value
is set that it actually is a binary.
Two other transcoders are included. Namely
`Memcache.Client.Transcoder.Erlang` and
`Memcache.Client.Transcoder.Json`. The first one uses Erlang's
`term_to_binary` for converting Elixir terms to binary and when
returning them they are automatically converted back. The JSON
transcoder uses `Poison` JSON library for serializing and
deserializing the data to and from JSON.
You can implement also your own transcoder by implementing the
`Memcache.Client.Transcoder` behaviour.
You can set the transcoder by setting the config value `:transcoder`
for the `:memcache_ex` application.