filterstore

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2022 License: MIT Imports: 13 Imported by: 0

README

filterstore

直连redis做过滤的模块.如果没有获取过滤器元信息的需求可以单独使用.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultOpts = Options{
	RedisURL:                        "redis://localhost:6379/0",
	RedisRouteMod:                   "",
	ConnTimeout:                     50,
	NamespaceBase:                   "itemfilter",
	BlacklistConfig_KeySubnamespace: "BID",
	RangeConfig_KeySubnamespace:     "RID",
	NamespaceConfig_EntitySourceTypeSubnamespace:  "EST",
	ContextConfig_KeySubnamespace:                 "CID",
	NamespaceConfig_PickerIntervalSubnamespace:    "PI",
	NamespaceConfig_PickerSubnamespace:            "PID",
	NamespaceConfig_PickerCounterSubnamespace:     "PC",
	NamespaceConfig_PickerCounterDateSubnamespace: "PCD",
	PickerCounterOn:                    false,
	PickerCounterConfig_TTLDays:        7,
	PickerCounterConfig_RangeCounterOn: false,
	PickerCounterConfig_RangeTTLDays:   7,
}
View Source
var ErrDateOversize = errors.New("DateOversize")
View Source
var ErrFeatureNotOn = errors.New("FeatureNotOn")
View Source
var ErrFilterSettingNotMatchFilterType = errors.New("FilterSettingNotMatchFilterType")
View Source
var ErrKeyNotExist = errors.New("KeyNotExist")
View Source
var ErrKeyNotFilter = errors.New("KeyNotFilter")
View Source
var ErrNeedAtLeastOneEnvInfo = errors.New("NeedAtLeastOneEnvInfo")
View Source
var ErrNotImplemented = errors.New("NotImplemented")
View Source
var ErrRangeNotExist = errors.New("RangeNotExist")

Functions

func ExpAtTime

func ExpAtTime(TimeRange string) time.Time

func WithOptions

func WithOptions(opts *Options) optparams.Option[Options]

WithOptions 使用特定单机redis连接设置

Types

type BloomFilter

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

func NewBloomFilter

func NewBloomFilter(client redis.UniversalClient, key string, setttl time.Duration) (*BloomFilter, error)

func (*BloomFilter) Add

func (s *BloomFilter) Add(ctx context.Context, RefreshTTL bool, elements ...string) error

func (*BloomFilter) CheckIn

func (s *BloomFilter) CheckIn(ctx context.Context, candidates ...string) (map[string]bool, error)

func (*BloomFilter) Clean

func (s *BloomFilter) Clean(ctx context.Context) error

func (*BloomFilter) Create

func (*BloomFilter) CreateAndAdd

func (s *BloomFilter) CreateAndAdd(ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, elements ...string) error

func (*BloomFilter) PipeCheckIn

func (s *BloomFilter) PipeCheckIn(pipe redis.Pipeliner, ctx context.Context, candidates ...string) (BoolMapPromise, error)

func (*BloomFilter) PipeCreateAndAdd

func (s *BloomFilter) PipeCreateAndAdd(pipe redis.Pipeliner, ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, expat string, elements ...string) error

func (*BloomFilter) PipeStatus

func (s *BloomFilter) PipeStatus(pipe redis.Pipeliner, ctx context.Context) FilterStatusPromise

func (*BloomFilter) Status

type BloomFilterStatusPromise

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

func (*BloomFilterStatusPromise) Result

type BoolMapPromise

type BoolMapPromise interface {
	Result() (map[string]bool, error)
}

type CuckooFilter

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

func NewCuckooFilter

func NewCuckooFilter(client redis.UniversalClient, key string, setttl time.Duration) (*CuckooFilter, error)

func (*CuckooFilter) Add

func (s *CuckooFilter) Add(ctx context.Context, RefreshTTL bool, elements ...string) error

func (*CuckooFilter) CheckIn

func (s *CuckooFilter) CheckIn(ctx context.Context, candidates ...string) (map[string]bool, error)

func (*CuckooFilter) Clean

func (s *CuckooFilter) Clean(ctx context.Context) error

func (*CuckooFilter) Create

func (*CuckooFilter) CreateAndAdd

func (s *CuckooFilter) CreateAndAdd(ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, elements ...string) error

func (*CuckooFilter) PipeCheckIn

func (s *CuckooFilter) PipeCheckIn(pipe redis.Pipeliner, ctx context.Context, candidates ...string) (BoolMapPromise, error)

func (*CuckooFilter) PipeCreateAndAdd

func (s *CuckooFilter) PipeCreateAndAdd(pipe redis.Pipeliner, ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, expat string, elements ...string) error

func (*CuckooFilter) PipeStatus

func (*CuckooFilter) Status

type CuckooFilterStatusPromise

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

func (*CuckooFilterStatusPromise) Result

type Filter

type Filter interface {
	Create(ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting) error
	Add(ctx context.Context, RefreshTTL bool, elements ...string) error
	CreateAndAdd(ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, elements ...string) error
	Status(ctx context.Context) (*itemfilterRPC_pb.RedisFilterStatus, error)
	CheckIn(ctx context.Context, candidates ...string) (map[string]bool, error)
	Clean(ctx context.Context) error

	PipeCreateAndAdd(pipe redis.Pipeliner, ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, expat string, elements ...string) error
	PipeCheckIn(pipe redis.Pipeliner, ctx context.Context, candidates ...string) (BoolMapPromise, error)
	PipeStatus(pipe redis.Pipeliner, ctx context.Context) FilterStatusPromise
}

type FilterPromise

type FilterPromise struct {
	Defaultsetting *itemfilterRPC_pb.RedisFilterSetting
	Expat          string
	// contains filtered or unexported fields
}

func (*FilterPromise) Result

func (p *FilterPromise) Result(client redis.UniversalClient) (Filter, error)

type FilterStatusPromise

type FilterStatusPromise interface {
	Result() (*itemfilterRPC_pb.RedisFilterStatus, error)
}

type FilterStore

type FilterStore interface {
	Init(opts ...optparams.Option[Options]) error

	//黑名单
	BlacklistKey(blacklistid string) string

	NewBlacklist(blacklistid string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error
	BlacklistStatus(blacklistid string) (*itemfilterRPC_pb.RedisFilterStatus, error)
	DeleteBlacklist(id string) error
	UpdateBlacklistSource(id string, Content ...string) error
	CheckSourceInBlacklist(id string, Candidates ...string) (CandidateStatus map[string]bool, err error)
	FilterSourceInBlacklist(id string, Need, ChunkSize int32, Candidates ...string) (Survivor []string, err error)

	//range
	RangeKey(rangeid string) string

	NewRange(rangeid string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error
	RangeStatus(rangeid string) (*itemfilterRPC_pb.RedisFilterStatus, error)
	DeleteRange(id string) error
	AddRangeSource(id string, Content ...string) error
	CheckSourceInRange(id string, Candidates ...string) (CandidateStatus map[string]bool, err error)
	FilterSourceNotInRange(id string, Need, ChunkSize int32, Candidates ...string) (Survivor []string, err error)

	//context
	ContextKeyTemplate() string
	ContextKey(EntitySourceType, ContextID string) string
	NewContext(EntitySourceType, ContextID string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error
	ContextStatus(EntitySourceType, ContextID string) (*itemfilterRPC_pb.RedisFilterStatus, error)

	//picker
	PickerKeyTemplate() string
	PickerKey(EntitySourceType, PickerInterval, PickerID string) string
	NewPicker(EntitySourceType, PickerID string, settings map[string]*itemfilterRPC_pb.RedisFilterSetting, Content ...string) error
	PickerStatus(EntitySourceType, PickerID string) (map[string]*itemfilterRPC_pb.RedisFilterStatus, error)
	//opra
	SetEntitySourceUsed(*itemfilterRPC_pb.SetSourceUsedQuery) error
	CheckEntitySource(Condition *itemfilterRPC_pb.Condition, Candidates ...string) (CandidateStatus map[string]bool, err error)
	FilterEntitySource(Condition *itemfilterRPC_pb.Condition, Need, ChunkSize int32, Candidates ...string) (Survivor []string, err error)

	//pickercounter
	PickerCounterKeyTemplate() string
	PickerCounterKey(Date time.Time) string
	RangePickerCounterKeyTemplate() string
	RangePickerCounterKey(Date time.Time, RID string) string

	GetPickerCounterNumber(Days, Offset int32, mod itemfilterRPC_pb.UnionMod, Ranges ...string) (map[string]int64, error)
}

type Options

type Options struct {
	RedisURL                                      string
	RedisRouteMod                                 string
	ConnTimeout                                   int
	NamespaceBase                                 string
	BlacklistConfig_KeySubnamespace               string
	BlacklistConfig_DefaultTTLDays                int
	RangeConfig_KeySubnamespace                   string
	RangeConfig_FilterType                        string
	NamespaceConfig_EntitySourceTypeSubnamespace  string
	ContextConfig_KeySubnamespace                 string
	NamespaceConfig_PickerIntervalSubnamespace    string
	NamespaceConfig_PickerSubnamespace            string
	NamespaceConfig_PickerCounterSubnamespace     string
	NamespaceConfig_PickerCounterDateSubnamespace string

	PickerCounterOn                    bool
	PickerCounterConfig_TTLDays        int
	PickerCounterConfig_RangeCounterOn bool
	PickerCounterConfig_RangeTTLDays   int

	DefaultBlacklistFilterInfo *itemfilterRPC_pb.SetFilterSetting
	DefaultRangeFilterInfo     *itemfilterRPC_pb.RedisFilterSetting
	DefaultContextFilterInfo   *itemfilterRPC_pb.RedisFilterSetting
	DefaultPickerFilterInfos   map[string]*itemfilterRPC_pb.RedisFilterSetting
}

Option 设置key行为的选项

type RedisFilterStore

type RedisFilterStore struct {
	Opts Options
	// contains filtered or unexported fields
}

func NewRedisFilterStore

func NewRedisFilterStore() *RedisFilterStore

func (*RedisFilterStore) AddRangeSource

func (s *RedisFilterStore) AddRangeSource(rangeid string, Content ...string) error

func (*RedisFilterStore) BlacklistKey

func (s *RedisFilterStore) BlacklistKey(blacklistid string) string

黑名单

func (*RedisFilterStore) BlacklistStatus

func (s *RedisFilterStore) BlacklistStatus(blacklistid string) (*itemfilterRPC_pb.RedisFilterStatus, error)

func (*RedisFilterStore) CheckEntitySource

func (s *RedisFilterStore) CheckEntitySource(Condition *itemfilterRPC_pb.Condition, Candidates ...string) (CandidateStatus map[string]bool, err error)

CheckEntitySource 如果range不存在则报错,其他条件如果不存在则跳过校验

func (*RedisFilterStore) CheckSourceInBlacklist

func (s *RedisFilterStore) CheckSourceInBlacklist(blacklistid string, Candidates ...string) (CandidateStatus map[string]bool, err error)

func (*RedisFilterStore) CheckSourceInRange

func (s *RedisFilterStore) CheckSourceInRange(rangeid string, Candidates ...string) (CandidateStatus map[string]bool, err error)

func (*RedisFilterStore) ContextKey

func (s *RedisFilterStore) ContextKey(EntitySourceType, ContextID string) string

func (*RedisFilterStore) ContextKeyTemplate

func (s *RedisFilterStore) ContextKeyTemplate() string

context

func (*RedisFilterStore) ContextStatus

func (s *RedisFilterStore) ContextStatus(EntitySourceType, ContextID string) (*itemfilterRPC_pb.RedisFilterStatus, error)

func (*RedisFilterStore) DeleteBlacklist

func (s *RedisFilterStore) DeleteBlacklist(blacklistid string) error

func (*RedisFilterStore) DeleteRange

func (s *RedisFilterStore) DeleteRange(rangeid string) error

func (*RedisFilterStore) FilterEntitySource

func (s *RedisFilterStore) FilterEntitySource(Condition *itemfilterRPC_pb.Condition, Need, chunkSize int32, Candidates ...string) (Survivor []string, err error)

func (*RedisFilterStore) FilterSourceInBlacklist

func (s *RedisFilterStore) FilterSourceInBlacklist(blacklistid string, Need, chunkSize int32, Candidates ...string) (Survivor []string, err error)

func (*RedisFilterStore) FilterSourceNotInRange

func (s *RedisFilterStore) FilterSourceNotInRange(rangeid string, Need, chunkSize int32, Candidates ...string) (Survivor []string, err error)

func (*RedisFilterStore) GetPickerCounterNumber

func (s *RedisFilterStore) GetPickerCounterNumber(Days, Offset int32, mod itemfilterRPC_pb.UnionMod, Ranges ...string) (map[string]int64, error)

func (*RedisFilterStore) Init

func (s *RedisFilterStore) Init(opts ...optparams.Option[Options]) error

func (*RedisFilterStore) NewBlacklist

func (s *RedisFilterStore) NewBlacklist(blacklistid string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error

func (*RedisFilterStore) NewContext

func (s *RedisFilterStore) NewContext(EntitySourceType, ContextID string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error

func (*RedisFilterStore) NewPicker

func (s *RedisFilterStore) NewPicker(EntitySourceType, PickerID string, settings map[string]*itemfilterRPC_pb.RedisFilterSetting, Content ...string) error

func (*RedisFilterStore) NewRange

func (s *RedisFilterStore) NewRange(rangeid string, setting *itemfilterRPC_pb.RedisFilterSetting, Content ...string) error

func (*RedisFilterStore) PickerCounterKey

func (s *RedisFilterStore) PickerCounterKey(Date time.Time) string

func (*RedisFilterStore) PickerCounterKeyTemplate

func (s *RedisFilterStore) PickerCounterKeyTemplate() string

pickercounter

func (*RedisFilterStore) PickerKey

func (s *RedisFilterStore) PickerKey(EntitySourceType, PickerInterval, PickerID string) string

func (*RedisFilterStore) PickerKeyTemplate

func (s *RedisFilterStore) PickerKeyTemplate() string

func (*RedisFilterStore) PickerStatus

func (s *RedisFilterStore) PickerStatus(EntitySourceType, PickerID string) (map[string]*itemfilterRPC_pb.RedisFilterStatus, error)

func (*RedisFilterStore) RangeKey

func (s *RedisFilterStore) RangeKey(rangeid string) string

range

func (*RedisFilterStore) RangePickerCounterKey

func (s *RedisFilterStore) RangePickerCounterKey(Date time.Time, RID string) string

func (*RedisFilterStore) RangePickerCounterKeyTemplate

func (s *RedisFilterStore) RangePickerCounterKeyTemplate() string

func (*RedisFilterStore) RangeStatus

func (s *RedisFilterStore) RangeStatus(rangeid string) (*itemfilterRPC_pb.RedisFilterStatus, error)

func (*RedisFilterStore) SetEntitySourceUsed

func (s *RedisFilterStore) SetEntitySourceUsed(in *itemfilterRPC_pb.SetSourceUsedQuery) error

func (*RedisFilterStore) UpdateBlacklistSource

func (s *RedisFilterStore) UpdateBlacklistSource(blacklistid string, Content ...string) error

type SetBoolMapPlacehold

type SetBoolMapPlacehold struct {
	Cmd   *redis.BoolSliceCmd
	Items []string
}

func (*SetBoolMapPlacehold) Result

func (r *SetBoolMapPlacehold) Result() (map[string]bool, error)

type SetFilter

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

func NewSetFilter

func NewSetFilter(client redis.UniversalClient, key string, setttl time.Duration) (*SetFilter, error)

func (*SetFilter) Add

func (s *SetFilter) Add(ctx context.Context, RefreshTTL bool, elements ...string) error

func (*SetFilter) CheckIn

func (s *SetFilter) CheckIn(ctx context.Context, candidates ...string) (map[string]bool, error)

func (*SetFilter) Clean

func (s *SetFilter) Clean(ctx context.Context) error

func (*SetFilter) Create

func (*SetFilter) CreateAndAdd

func (s *SetFilter) CreateAndAdd(ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, elements ...string) error

func (*SetFilter) PipeCheckIn

func (s *SetFilter) PipeCheckIn(pipe redis.Pipeliner, ctx context.Context, candidates ...string) (BoolMapPromise, error)

func (*SetFilter) PipeCreateAndAdd

func (s *SetFilter) PipeCreateAndAdd(pipe redis.Pipeliner, ctx context.Context, info *itemfilterRPC_pb.RedisFilterSetting, expat string, elements ...string) error

func (*SetFilter) PipeStatus

func (s *SetFilter) PipeStatus(pipe redis.Pipeliner, ctx context.Context) FilterStatusPromise

func (*SetFilter) Status

type SetFilterStatusPromise

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

func (*SetFilterStatusPromise) Result

Jump to

Keyboard shortcuts

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