Mem
KV cache with TTL, LRU and Persistence support
Usage
define your cache module
defmodule Cache douse Mem,worker_number: 2, # (optional, default: 2) how many processes in worker pooldefault_ttl: 300, # (optional, default: nil) default seconds for set/2maxmemory_size: "1000M", # (optional, default: nil) max memory used, support such format: [1000, "10k", "1GB", "1000 K"]maxmemory_strategy: :lru, # ([:lru, :ttl, :fifo]) strategy for cleaning memorypersistence: false # (optional, default: false) whether enable persistenceendadd this module to supervisor
defmodule MyApp.Supervisor douse Supervisordef start_link doSupervisor.start_link(__MODULE__, [])enddef init([]) do[ Cache.child_spec,] |> supervise(strategy: :one_for_one)endendjust use it like redis
Cache.set(:a, 1)Cache.inc(:a, 2)Cache.set(:b, 2, 200)Cache.get(:a)Cache.expire(:a, 200)Cache.ttl(:a)Cache.del(:b)Cache.flushCache.hset(:c, :a, 2)Cache.hget(:c, :a)