Mnemonix

A unified interface to key-value stores.

!Version Hex License

Synopsis

Mnemonix aims to help you:

  • Get running with key-values stores with minimal ceremony
  • Experiment with different key-value store backends for your application
  • Allow end-users of your library liberty to choose their preferred backend

It encodes the behaviour, lifecycle, and feature set of a key-value store behind a common GenServer interface, normalizes different store APIs to conform to that interface, polyfill stores lacking features, and exposes access to them through a familiar Map API.

Learn more about starting a Mnemonix.Store and manipulating it with the Mnemonix API in the documentation.

Pronunciation: /nɛˈmɑːnɪks/noo-MAHN-icks

Mnemonic systems are techniques or strategies consciously used to improve memory. They help use information already stored in long-term memory to make memorization an easier task.

Mnemonics, Wikipedia

Not to be confused with the mnemonicode library, Mnemonex.

Status

:thumbsup:Continuous IntegrationTest Coverage
MasterBuild StatusCoverage Status
DevelopmentBuild StatusCoverage Status

Utilities

Mnemonix offers a standard set of utilities atop stores beyond simple key-value access. Stores that don’t naitively support a utility have the capability added through an Elixir polyfill, guaranteeing you can use and switch stores without worrying about what features they support under the hood.

Available utilities are:

  • Mnemonix.Bump - Increment/decrement integer values
  • Mnemonix.Expiry - Set entries to remove themselves from the store with a ttl

Installation

  • Add Mnemonix to your project’s dependencies in its mix.exs:
  def deps do
    [{:mnemonix, "~> 0.2.0"}]
  end
  • Ensure Mnemonix is started before your application:
  def application do
    [applications: [:mnemonix]]
  end

Contributing

Pull requests are welcome and greatly appreciated!

Here are some useful commands if you’ve just forked the project and want to contribute:

  • mix deps.get - Get development dependencies
  • mix test - Run the test suite
  • mix credo - Run static code analysis on Elixir source
  • mix dialyzer - Run static code analysis on compiled BEAM bytecode
  • mix docs - Generate documentation files
  • mix clean - If any of the above stop behaving as expected