Memcached client for Elixir. It supports clusters and AWS Elasticache.
defp deps() do
...
{:memcachir, "~> 3.3"},
...
end
defp application() do
[applications: [:logger, :memcachir, ...]]
end
config :memcachir,
hosts: "localhost"
The hosts
config allows multiple variants:
hosts: "localhost:11212" # specify port
hosts: ["host1", "host2", "host3:11212"] # cluster of servers
hosts: [{"host1", 10}, {"host2", 30}] # cluster with weights
Alternatively you can use the elasticache config option:
config :memcachir,
elasticache: "your-config-endpoint.cache.amazonaws.com"
Complete configuration options with default values:
config :memcachir,
hosts: "localhost",
# memcached options
ttl: 0,
namespace: nil,
# connection pool options
pool: [
strategy: :lifo,
size: 10,
max_overflow: 10]
If you don't want to use the built in service discovery methods (host list, elasticache), you can implement the Herd.Discovery
behavior, which just has a single nodes/0
callback. Then configure it in with:
config :memcachir, :service_discovery, MyMemcacheServiceDiscovery
(NB you'll need to delete the config :memcachir, :hosts
and config :memcachir, :elasticache
entries to use a custom service discovery module)
iex> Memcachir.set("hello", "world")
{:ok}
iex> Memcachir.get("hello")
{:ok, "world"}
Example with ttl (in seconds)
iex> Memcachir.set("hello", "world", ttl: 5)
{:ok}
iex> Memcachir.get("hello")
{:ok, "world"}
iex> :timer.sleep(5001)
:ok
iex> Memcachir.get("hello")
{:error, "Key not found"}
Copyright (c) 2017 Enrique Martinez
This library licensed under the MIT license.