Skip to main content

Posts

Showing posts from October, 2018

Hermes - My Need For An Alternate Key-Value Store

Hermes
Yet another concurrent, lightweight, fast and efficient In-Memory Key-Value Store alternative. This was a sub-component of a pet IR system in Go. I thought this is helpful enough and can stand on its own and can help alleviate disk I/O operations (database, file, etc.) in a quite-not-so-small-but-single-machine kind of systems.
What makes Hermes unique is its use of the ff:
LRFU cache (which makes for a swift transition between LRU and LFU).Bloom filter implementation (Cuckoo Filter, to allow for item deletion in every eviction done by the policy) to avoid caching one-hit-wonders (disabled by default, please see the toml file to enable it) for memory efficiency.HAMT data structure (which makes it memory efficient at a nearly O(1) operation)
Use this in your app like so (as embedded): package main import ( "fmt" "github.com/jtejido/hermes/hermes" "github.com/jtejido/hermes/config" "github.com/BurntSushi/toml" "sync" "st…