Documentation
¶
Overview ¶
Package bloom 提供了布隆过滤器的接口定义和实现。 布隆过滤器是一种空间效率很高的概率型数据结构,用于判断一个元素是否在集合中。 它通过多个哈希函数将元素映射到位数组中的多个位置,从而实现高效的成员查询。
Package bloom 提供了布隆过滤器的接口定义和实现。
Package bloom 提供了布隆过滤器的接口定义和实现。 布隆过滤器是一种空间效率很高的概率型数据结构,用于判断一个元素是否在集合中。 它通过多个哈希函数将元素映射到位数组中的多个位置,从而实现高效的成员查询。
Index ¶
- Variables
- func NewMemoryStore(size int) *memoryStore
- func NewRedisStore(redis kitredis.Redis) (*redisStore, error)
- type Bloom
- type MockBloom
- func (m *MockBloom) Contain(ctx context.Context, value string) (bool, error)
- func (m *MockBloom) EXPECT() *MockBloomMockRecorder
- func (m *MockBloom) GroupContain(ctx context.Context, group, value string) (bool, error)
- func (m *MockBloom) GroupPut(ctx context.Context, group, value string) error
- func (m *MockBloom) Put(ctx context.Context, value string) error
- type MockBloomMockRecorder
- func (mr *MockBloomMockRecorder) Contain(ctx, value interface{}) *gomock.Call
- func (mr *MockBloomMockRecorder) GroupContain(ctx, group, value interface{}) *gomock.Call
- func (mr *MockBloomMockRecorder) GroupPut(ctx, group, value interface{}) *gomock.Call
- func (mr *MockBloomMockRecorder) Put(ctx, value interface{}) *gomock.Call
- type MockStore
- type MockStoreMockRecorder
- type Option
- type Store
Constants ¶
This section is empty.
Variables ¶
var ( ErrBloomNameEmpty = errors.New("bloom: bloom name can't be empty") ErrBloomNameRepeated = errors.New("bloom: bloom name can't repeated") ErrBloomFalseProbabilityThanOne = errors.New("bloom: bloom false probability can't than 1") ErrBloomFalseProbabilityNegative = errors.New("bloom: bloom false probability can't be negative") )
var (
ErrResultTypeNotArray = errors.New("result type is not array")
)
ErrResultTypeNotArray 表示 Redis 脚本返回结果类型不是数组时的错误。 当期望返回数组类型但实际类型不符时会返回该错误。
Functions ¶
func NewMemoryStore ¶
func NewMemoryStore(size int) *memoryStore
NewMemoryStore 创建一个新的内存存储实例。
参数:
- size:内存块大小,以 byte 为单位。如果为 0,则使用默认大小。
返回值:
- *memoryStore:新的内存存储实例
func NewRedisStore ¶
NewRedisStore 创建一个基于 Redis 的布隆过滤器存储实例。
参数:
- redis:Redis 客户端实例,用于与 Redis 服务进行通信。
返回值:
- *redisStore:Redis 存储实现的实例指针。
- error:初始化过程中发生的错误。
Types ¶
type Bloom ¶
type Bloom interface {
// Contain 判断指定元素是否可能存在于布隆过滤器中。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - value:要判断是否存在的元素值
//
// 返回值:
// - bool:元素是否可能存在于布隆过滤器中
// - false:元素肯定不存在
// - true:元素可能存在(存在误判可能)
// - error:操作过程中发生的错误
Contain(ctx context.Context, value string) (bool, error)
// Put 将指定元素添加到布隆过滤器中。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - value:要添加到布隆过滤器中的元素值
//
// 返回值:
// - error:添加过程中发生的错误
Put(ctx context.Context, value string) error
// GroupContain 判断指定分组中是否可能包含指定元素。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - group:分组名称,用于区分不同的数据集合
// - value:要判断是否存在的元素值
//
// 返回值:
// - bool:元素是否可能存在于指定分组中
// - false:元素在指定分组中肯定不存在
// - true:元素在指定分组中可能存在(存在误判可能)
// - error:操作过程中发生的错误
GroupContain(ctx context.Context, group string, value string) (bool, error)
// GroupPut 将指定元素添加到指定分组的布隆过滤器中。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - group:分组名称,用于区分不同的数据集合
// - value:要添加到布隆过滤器中的元素值
//
// 返回值:
// - error:添加过程中发生的错误
GroupPut(ctx context.Context, group string, value string) error
}
Bloom 定义了布隆过滤器的核心接口。 该接口提供了基本的元素判断和添加功能,以及分组操作的支持。 布隆过滤器的主要特点是空间效率高,但可能存在误判(假阳性)。
type MockBloom ¶
type MockBloom struct {
// contains filtered or unexported fields
}
MockBloom 是 Bloom 接口的 mock 实现。 用于在测试中模拟布隆过滤器的行为。
func NewMockBloom ¶
func NewMockBloom(ctrl *gomock.Controller) *MockBloom
NewMockBloom 创建一个新的 MockBloom 实例。
参数:
- ctrl:gomock 控制器实例,用于管理 mock 对象
返回值:
- *MockBloom:新创建的 mock 实例
func (*MockBloom) Contain ¶
Contain 模拟了 Bloom 接口的 Contain 方法。 用于判断指定元素是否可能存在于布隆过滤器中。
参数:
- ctx:上下文对象,用于控制请求的生命周期
- value:要判断是否存在的元素值
返回值:
- bool:元素是否可能存在于布隆过滤器中
- error:操作过程中发生的错误
func (*MockBloom) EXPECT ¶
func (m *MockBloom) EXPECT() *MockBloomMockRecorder
EXPECT 返回一个对象,允许调用者指示预期的使用。
返回值:
- *MockBloomMockRecorder:用于设置期望的调用记录器
func (*MockBloom) GroupContain ¶
GroupContain 模拟了 Bloom 接口的 GroupContain 方法。 用于判断指定分组中是否可能包含指定元素。
参数:
- ctx:上下文对象,用于控制请求的生命周期
- group:分组名称,用于区分不同的数据集合
- value:要判断是否存在的元素值
返回值:
- bool:元素是否可能存在于指定分组中
- error:操作过程中发生的错误
type MockBloomMockRecorder ¶
type MockBloomMockRecorder struct {
// contains filtered or unexported fields
}
MockBloomMockRecorder 是 MockBloom 的调用记录器。 用于记录和验证对 MockBloom 的方法调用。
func (*MockBloomMockRecorder) Contain ¶
func (mr *MockBloomMockRecorder) Contain(ctx, value interface{}) *gomock.Call
Contain 指示对 Contain 方法的预期调用。
参数:
- ctx:上下文对象
- value:要判断的元素值
返回值:
- *gomock.Call:用于设置期望的调用
func (*MockBloomMockRecorder) GroupContain ¶
func (mr *MockBloomMockRecorder) GroupContain(ctx, group, value interface{}) *gomock.Call
GroupContain 指示对 GroupContain 方法的预期调用。
参数:
- ctx:上下文对象
- group:分组名称
- value:要判断的元素值
返回值:
- *gomock.Call:用于设置期望的调用
func (*MockBloomMockRecorder) GroupPut ¶
func (mr *MockBloomMockRecorder) GroupPut(ctx, group, value interface{}) *gomock.Call
GroupPut 指示对 GroupPut 方法的预期调用。
参数:
- ctx:上下文对象
- group:分组名称
- value:要添加的元素值
返回值:
- *gomock.Call:用于设置期望的调用
func (*MockBloomMockRecorder) Put ¶
func (mr *MockBloomMockRecorder) Put(ctx, value interface{}) *gomock.Call
Put 指示对 Put 方法的预期调用。
参数:
- ctx:上下文对象
- value:要添加的元素值
返回值:
- *gomock.Call:用于设置期望的调用
type MockStore ¶
type MockStore struct {
// contains filtered or unexported fields
}
MockStore 是 Store 接口的 mock 实现。 用于在测试中模拟布隆过滤器底层数据存储的行为。
func NewMockStore ¶
func NewMockStore(ctrl *gomock.Controller) *MockStore
NewMockStore 创建一个新的 MockStore 实例。
参数:
- ctrl:gomock 控制器实例,用于管理 mock 对象
返回值:
- *MockStore:新创建的 mock 实例
func (*MockStore) Add ¶
Add 模拟了 Store 接口的 Add 方法。 用于将一组 hash 值添加到指定 key 对应的存储中。
参数:
- ctx:上下文对象,用于控制请求的生命周期
- key:存储键名
- hash:要添加的哈希值列表
返回值:
- error:添加过程中发生的错误
func (*MockStore) EXPECT ¶
func (m *MockStore) EXPECT() *MockStoreMockRecorder
EXPECT 返回一个对象,允许调用者指示预期的使用。
返回值:
- *MockStoreMockRecorder:用于设置期望的调用记录器
type MockStoreMockRecorder ¶
type MockStoreMockRecorder struct {
// contains filtered or unexported fields
}
MockStoreMockRecorder 是 MockStore 的调用记录器。 用于记录和验证对 MockStore 的方法调用。
func (*MockStoreMockRecorder) Add ¶
func (mr *MockStoreMockRecorder) Add(ctx, key, hash interface{}) *gomock.Call
Add 指示对 Add 方法的预期调用。
参数:
- ctx:上下文对象
- key:存储键名
- hash:要添加的哈希值列表
返回值:
- *gomock.Call:用于设置期望的调用
func (*MockStoreMockRecorder) Exist ¶
func (mr *MockStoreMockRecorder) Exist(ctx, key, hash interface{}) *gomock.Call
Exist 指示对 Exist 方法的预期调用。
参数:
- ctx:上下文对象
- key:存储键名
- hash:要判断的哈希值列表
返回值:
- *gomock.Call:用于设置期望的调用
type Option ¶
type Option func(*bloom)
Option 定义了布隆过滤器的配置选项类型。 用于在创建布隆过滤器时进行自定义配置。
func WithExpectedElements ¶
WithExpectedElements 设置布隆过滤器预计要存储的元素数量。
参数:
- n:预计元素数量。
返回值:
- Option:配置选项函数。
type Store ¶
type Store interface {
// Exist 判断指定 key 对应的所有 hash 值是否都已存在。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - key:存储键名
// - hash:要判断的哈希值列表
//
// 返回值:
// - bool:所有哈希值是否都已存在
// - false:至少有一个哈希值不存在
// - true:所有哈希值都存在
// - error:查询过程中发生的错误
Exist(ctx context.Context, key string, hash []uint64) (bool, error)
// Add 将一组 hash 值添加到指定 key 对应的存储中。
//
// 参数:
// - ctx:上下文对象,用于控制请求的生命周期
// - key:存储键名
// - hash:要添加的哈希值列表
//
// 返回值:
// - error:添加过程中发生的错误
Add(ctx context.Context, key string, hash []uint64) error
}
Store 定义了布隆过滤器底层数据存储的接口。 该接口负责实际的数据存储和查询操作。 不同的存储实现可以支持不同的后端存储系统,如内存、Redis 等。