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/to