Mem

KV cache with TTL, Replacement and Persistence support

Build StatusCoverallsHex.pm VersionHex.pm Downloads

Usage

  1. define your cache module

     defmodule Cache do
       use Mem,
         worker_number:      2,       # (optional, default: 2) how many processes in worker pool
         default_ttl:        300,     # (optional, default: nil) default expire seconds for set/2
    
         maxmemory_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 memory
         persistence:        false    # (optional, default: false) whether enable persistence
    
     end
  2. add this module to supervisor

     defmodule MyApp.Supervisor do
       use Supervisor
    
       def start_link do
         Supervisor.start_link(__MODULE__, [])
       end
    
       def init([]) do
         [ Cache.child_spec,
         ] |> supervise(strategy: :one_for_one)
       end
    
     end
  3. just 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.flush
    
     Cache.hset(:c, :a, 2)
     Cache.hget(:c, :a)
    
     Cache.memory_used()

Thanks