Skip to content
This repository has been archived by the owner on Nov 9, 2022. It is now read-only.
/ cuckoo Public archive

🐦 Cuckoo Filters in Elixir

License

Notifications You must be signed in to change notification settings

gmcabrita/cuckoo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cuckoo

Build Status Coverage Status Hex docs Hex Version License

Cuckoo is a pure Elixir implementation of a Cuckoo Filter.

Usage

Add Cuckoo as a dependency in your mix.exs file.

def deps do
  [{:cuckoo, "~> 1.0"}]
end

Examples

iex> cf = Cuckoo.new(1000, 16, 4)
%Cuckoo{...}

iex> {:ok, cf} = Cuckoo.insert(cf, 5)
%Cuckoo{...}

iex> Cuckoo.contains?(cf, 5)
true

iex> {:ok, cf} = Cuckoo.delete(cf, 5)
%Cuckoo{...}

iex> Cuckoo.contains?(cf, 5)
false

Implementation Details

The implementation follows the specification as per the paper above.

For hashing we use the x64_128 variant of Murmur3 and the Erlang phash2.