Skip to content
/ mem Public

KV cache with TTL, Replacement and Persistence support

License

Notifications You must be signed in to change notification settings

falood/mem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

KV cache with TTL, Replacement and Persistence support

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages