bitmap

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 3, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BitmapFakeReplicator

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

func (*BitmapFakeReplicator) DropReplicationKey

func (r *BitmapFakeReplicator) DropReplicationKey(ctx context.Context, replicationKey string) error

func (*BitmapFakeReplicator) Recover

func (r *BitmapFakeReplicator) Recover(ctx context.Context, storage MemorySetStorage, replicationKey string) error

func (*BitmapFakeReplicator) Replicate

func (r *BitmapFakeReplicator) Replicate(ctx context.Context, storage MemorySetStorage, replicationKey string, ttl time.Duration) error

type BitmapRedisReplicator

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

func (*BitmapRedisReplicator) DropReplicationKey

func (r *BitmapRedisReplicator) DropReplicationKey(ctx context.Context, replicationKey string) error

func (*BitmapRedisReplicator) Recover

func (r *BitmapRedisReplicator) Recover(ctx context.Context, storage MemorySetStorage, versionKey string) error

Recover восстанавливает данные из резервного хранилища в MemorySetStorage(конкретно тут из redis в roaring64.Bitmap).

func (*BitmapRedisReplicator) Replicate

func (r *BitmapRedisReplicator) Replicate(ctx context.Context, storage MemorySetStorage, replicationKey string, ttl time.Duration) error

Replicate реплицирует данные из MemorySetStorage в резервное хранилище (в данном случае в Redis).

type BitmapStorageConfigs

type BitmapStorageConfigs struct {
	MonitoringTicker  time.Duration
	OptimizingTicker  time.Duration
	ReplicationTicker time.Duration
	ReplicationTtl    time.Duration
	StorageName       string
	DebugLogs         bool   // флаг для включения/отключения отладочных логов
	ReplicationKey    string // ключ для репликации, например, "bitmap_current_goods_ids"
}

type BitmapStubReplicator

type BitmapStubReplicator struct{}

func (*BitmapStubReplicator) DropReplicationKey

func (stub *BitmapStubReplicator) DropReplicationKey(ctx context.Context, replicationKey string) error

func (*BitmapStubReplicator) Recover

func (stub *BitmapStubReplicator) Recover(ctx context.Context, storage MemorySetStorage, versionKey string) error

func (*BitmapStubReplicator) Replicate

func (stub *BitmapStubReplicator) Replicate(ctx context.Context, storage MemorySetStorage, replicationKey string, ttl time.Duration) error

type MemorySetStorage

type MemorySetStorage interface {
	// MustWarmer устанавливает функцию, которая будет вызываться для заполнения хранилища
	MustWarmer(ctx context.Context, warmerFunc WarmerFunc)
	// Contains проверяет, содержится ли ключ в хранилище
	Contains(key uint64) bool
	// UpsertMany добавляет несколько ключей в хранилище
	UpsertMany(keys []uint64)
	// RemoveMany удаляет несколько ключей из хранилища
	RemoveMany(keys []uint64)
	// GetCount возвращает количество элементов в хранилище
	GetCount() uint64
	// Clear очищает хранилище
	Clear()
	// Warm заполняет хранилище данными, если оно пустое
	Warm(ctx context.Context) error
	// ReadFromBuffer считывает данные из буфера и добавляет их в bitmap
	ReadFromBuffer(ctx context.Context, buffer *bytes2.Buffer) (int64, error)
	// GetBytesFromBitmap возвращает байтовое представление bitmap
	GetBytesFromBitmap() ([]byte, error)
	// Recover восстанавливает bitmap из байтового представления
	Recover(ctx context.Context) error
	// Replicate реплицирует данные из bitmap в хранилище
	Replicate(ctx context.Context) error
	// DropReplicationKey удаляет ключ репликации из хранилища
	DropReplicationKey(ctx context.Context) error
}

func NewBitmapStorage

func NewBitmapStorage(
	replicator MemorySetStorageReplicator,
	configs BitmapStorageConfigs,
	warmer *Warmer,
) MemorySetStorage

type MemorySetStorageReplicator

type MemorySetStorageReplicator interface {
	// Replicate реплицирует данные в хранилище
	Replicate(ctx context.Context, storage MemorySetStorage, replicationKey string, ttl time.Duration) error
	// Recover восстанавливает данные из хранилища
	Recover(ctx context.Context, storage MemorySetStorage, replicationKey string) error
	// DropReplicationKey удаляет ключ репликации из хранилища
	DropReplicationKey(ctx context.Context, replicationKey string) error
}

func NewBimapRedisReplicator

func NewBimapRedisReplicator(redisClient *redis.Client, forStorage string) MemorySetStorageReplicator

func NewBitmapFakeReplicator

func NewBitmapFakeReplicator(forStorage string) MemorySetStorageReplicator

func NewBitmapStubReplicator

func NewBitmapStubReplicator() MemorySetStorageReplicator

type Warmer

type Warmer struct {
	WarmCallback WarmerFunc
	BatchSize    int32
}

type WarmerFunc

type WarmerFunc func(ctx context.Context, batchSize int32, bitmap MemorySetStorage) ([]uint64, error)

Jump to

Keyboard shortcuts

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