mem icon indicating copy to clipboard operation
mem copied to clipboard

KV cache with TTL, Replacement and Persistence support

Mem

KV cache with TTL, Replacement and Persistence support

Build Status Coveralls Hex.pm Version Hex.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