packages feed

bloomfilter-redis-0.1.0.1: README.md

# bloomfilter-redis [![Build Status](https://travis-ci.org/hesiod/bloomfilter-redis.svg?branch=master)](https://travis-ci.org/hesiod/bloomfilter-redis)

Distributed bloom filters on Redis (using the Hedis client).

The hash family algorithm is partly inspired by
[Brian O'Sullivan's bloomfilter package](https://hackage.haskell.org/package/bloomfilter).

## Features

* Implementation of the FNV-1/FNV-1a hash function is included
* Automatic derivation of a hash family from a single hash function
  as described by Kirsch and Mitzenmacher
* The bloom filter is distributed without extra effort since
  Redis does the heavy lifting
* Every `Hashable` type can be added to the bloom filter
* Every `Binary` type can be hashed

## Benchmark and Testing suite

A benchmark for the FNV hash function is included and can
be invoked using `cabal bench` or `stack bench`.
An HTML report is generated as `report.html`.

A testing suite using `tasty` is included.

## Further Information
### Todo

* Separate the FNV hash function into a separate package
* The actual operations (`addBF`, `queryBF`, etc) should
  ideally live in a `MonadReader (Bloom a)`, but this requires
  some work on the Hedis side because of `RedisCtx`

### Caveats

* The only supported FNV hash sizes are 32 and 64 bits.
  Support for larger widths is a matter of having a
  data type with instances for `FiniteBits` and `Num`.
* The offset basis (`fnvOffsetBasis`) is not correctly
  computed, although this has absolutely no effect on
  the performance of the hash function in practice.