bloomfilter

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2023 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const RedisMaxLength = 8 * 512 * 1024 * 1024

Variables

View Source
var (
	ErrGreaterFalseProbability  = errors.New("filter false probability can't be greater than 1")
	ErrNegativeFalseProbability = errors.New("filter false probability can't be negative")
	ErrSizeZero                 = errors.New("filter calculated size is zero")
	ErrSizeTooBig               = fmt.Errorf("filter calculated size is greater than %d", RedisMaxLength)
	ErrNotInit                  = errors.New("filter is not init")
	ErrConfigUnequal            = errors.New("filter config unequal")
)

Functions

func HashMur3

func HashMur3(data []byte, hashIterations uint64, size uint64) []uint64

Types

type GBloomFilter

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

func NewGBloomFilter

func NewGBloomFilter(redisOper RedisBloomFilterOperate, opts ...Option) GBloomFilter

func (*GBloomFilter) GetGFilter

func (g *GBloomFilter) GetGFilter(key string) *GFilter

GetGFilter GFilter, 获取key的布隆过滤器实例GFilter

type GBloomFilterOptions

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

type GFilter

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

func (*GFilter) Add

func (gf *GFilter) Add(obj interface{}) error

func (*GFilter) Contains

func (gf *GFilter) Contains(obj interface{}) (bool, error)

func (*GFilter) Del

func (gf *GFilter) Del() error

func (*GFilter) Expired

func (gf *GFilter) Expired(second time.Duration) (int64, error)

func (*GFilter) TryInit

func (gf *GFilter) TryInit(expectedInsertions uint64, falseProbability float64) error

TryInit 尝试初始化,如果已经初始化(对于相同的key包括已经在其他机器初始化,设置了redis key config)则读取redis配置信息覆盖当前的配置

@expectedInsertions 预期插入量 @falseProbability 预期错误率

type HashFunc

type HashFunc func(data []byte, hashIterations uint64, size uint64) []uint64

type Option

type Option func(opts *GBloomFilterOptions)

func WithCheckConfig

func WithCheckConfig() Option

func WithHashfunc

func WithHashfunc(fun HashFunc) Option

func WithLogger

func WithLogger(logger log.FieldsLogger) Option

func WithPrefix

func WithPrefix(prefix string) Option

func WithUnPrefix

func WithUnPrefix() Option

type RedisBloomFilterOperate

type RedisBloomFilterOperate interface {
	HMGet(keys ...interface{}) (map[string]string, error)
	HMSet(kvs ...interface{}) error
	SetBit(key string, offset uint64, value int) error
	GetBit(key string, offset uint64) (int64, error)
	Expire(key string, second time.Duration) (int64, error)
	Del(key string) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL