README

ring - high performance bloom filter

BuildStatus codecov Go ReportCard GoDoc GitHublicense Mentioned in AwesomeGo

Package ring provides a high performance and thread safe Go implementation of a bloom filter.

Usage

Please see the godoc for usage.

Accuracy

Running make will perform unit tests, comparing the target false positive rate with the actual rate. Here is a test against 1 million elements with a targeted false positive rate of 0.1%. Tests fail if the number of false positives exceeds the target.

=== RUN   TestBadParameters
--- PASS: TestBadParameters (0.00s)
=== RUN   TestReset
--- PASS: TestReset (0.26s)
=== RUN   TestData
--- PASS: TestData (14.07s)
=== RUN   TestMerge
--- PASS: TestMerge (13.78s)
=== RUN   TestMarshal
--- PASS: TestMarshal (14.48s)
PASS
>> Number of elements:  1000000
>> Target false positive rate:  0.001000
>> Number of false positives:  99
>> Actual false positive rate:  0.000099
>> Number of false negatives:  0
>> Actual false negative rate:  0.000000
>> Benchmark Add():  10000000          158 ns/op
>> Benchmark Test():  10000000         173 ns/op
ok      command-line-arguments  47.914s

License

Copyright (c) 2019 Tanner Ryan. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

Documentation

Overview

Package ring provides a high performance and thread safe bloom filter.

License

Copyright (c) 2019 Tanner Ryan. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Ring

type Ring struct {
	// contains filtered or unexported fields
}

    Ring contains the information for a ring data store.

    func Init

    func Init(elements int, falsePositive float64) (*Ring, error)

      Init initializes and returns a new ring, or an error. Given a number of elements, it accurately states if data is not added. Within a falsePositive rate, it will indicate if the data has been added.

      func (*Ring) Add

      func (r *Ring) Add(data []byte)

        Add adds the data to the ring.

        func (*Ring) MarshalBinary

        func (r *Ring) MarshalBinary() ([]byte, error)

          MarshalBinary implements the encoding.BinaryMarshaler interface.

          func (*Ring) Merge

          func (r *Ring) Merge(m *Ring) error

            Merges the sent Ring into itself.

            func (*Ring) Reset

            func (r *Ring) Reset()

              Reset clears the ring.

              func (*Ring) Test

              func (r *Ring) Test(data []byte) bool

                Test returns a bool if the data is in the ring. True indicates that the data may be in the ring, while false indicates that the data is not in the ring.

                func (*Ring) UnmarshalBinary

                func (r *Ring) UnmarshalBinary(data []byte) error

                  UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.

                  Directories

                  Path Synopsis