Bloomf is a Bloomfilter written in Go and backed by redis.
- It makes use of several redis bitmap, so It won't be limited to 512MB which is the max of redis bitmap.
- Every
add
andcheck
only take one roundtrip forpipeline
is used. - It stores metadata in redis, you can fetch the metadata and restore bloomfilter instance, so Apps that use bloomf can be stateless.
- It use murmur3 hash function which will be uniformly distributed and high performance.
$ go get github.com/euclidr/bloomf
go packages bellow is also needed
package main
import (
"github.com/euclidr/bloomf"
"github.com/go-redis/redis"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
bl, err := bloomf.New(client, "bf" 1000000, 0.001)
if err == bloomf.ErrDuplicated {
bl, _ := bloomf.GetByName(client, "bf")
}
bl.Add([]bytes("awesome key"))
exists, _ := bl.Exists([]bytes("awesome key"))
if exists {
...
}
...
// bl.Clear() // you can clean up all datas in redis
}