compression

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EstimateCompressionRatio

func EstimateCompressionRatio(data []byte) map[string]float64

EstimateCompressionRatio estimates the compression ratio for different types

func OptimizeJSONKeys

func OptimizeJSONKeys(data []byte) ([]byte, map[string]string, error)

OptimizeJSONKeys optimizes JSON by shortening keys

Types

type CompressedData

type CompressedData struct {
	Type         CompressionType `msgpack:"t"`
	OriginalSize uint32          `msgpack:"os"`
	Compressed   []byte          `msgpack:"c"`
	Checksum     uint32          `msgpack:"cs,omitempty"`
}

CompressedData represents compressed data with metadata

func WrapCompressed

func WrapCompressed(data []byte, cType CompressionType, originalSize int) *CompressedData

WrapCompressed wraps compressed data with metadata

type CompressionLevel

type CompressionLevel int

CompressionLevel defines compression level

const (
	CompressionFastest CompressionLevel = 1
	CompressionDefault CompressionLevel = 5
	CompressionBest    CompressionLevel = 9
)

type CompressionType

type CompressionType uint8

CompressionType defines the type of compression

const (
	CompressionNone CompressionType = iota
	CompressionGzip
	CompressionZlib
	CompressionZstd
	CompressionMsgpack
	CompressionMsgpackZstd // MsgPack + Zstd for best compression
)

type Compressor

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

Compressor handles data compression

func NewCompressor

func NewCompressor(cType CompressionType, level CompressionLevel) (*Compressor, error)

NewCompressor creates a new compressor

func (*Compressor) Compress

func (c *Compressor) Compress(data []byte) ([]byte, error)

Compress compresses data based on the compression type

func (*Compressor) CompressJSON

func (c *Compressor) CompressJSON(v interface{}) ([]byte, error)

CompressJSON compresses JSON data with optimization

func (*Compressor) Decompress

func (c *Compressor) Decompress(data []byte) ([]byte, error)

Decompress decompresses data

func (*Compressor) DecompressJSON

func (c *Compressor) DecompressJSON(data []byte, v interface{}) error

DecompressJSON decompresses and unmarshals JSON data

type OptimizerConfig

type OptimizerConfig struct {
	// Compression settings
	CompressionType       CompressionType
	CompressionLevel      CompressionLevel
	MinSizeForCompression int // Minimum size in bytes to trigger compression

	// Redis optimization
	EnableRedisCompression bool
	RedisKeyPrefix         string

	// MongoDB optimization
	EnableMongoCompression bool
	MongoCompactKeys       bool // Use short keys for MongoDB documents

	// Automatic optimization
	AutoSelectCompression bool // Automatically select best compression based on data
}

OptimizerConfig contains optimizer configuration

type StorageOptimizer

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

StorageOptimizer optimizes storage for Redis and MongoDB

func NewStorageOptimizer

func NewStorageOptimizer(config *OptimizerConfig, redis *redis.Client, mongodb *mongo.Database) (*StorageOptimizer, error)

NewStorageOptimizer creates a new storage optimizer

func (*StorageOptimizer) GetCompressionStats

func (so *StorageOptimizer) GetCompressionStats(ctx context.Context) (map[string]interface{}, error)

GetCompressionStats returns compression statistics

func (*StorageOptimizer) OptimizedMongoBatchInsert

func (so *StorageOptimizer) OptimizedMongoBatchInsert(ctx context.Context, collection string, documents []interface{}) error

OptimizedMongoBatchInsert performs optimized batch insert to MongoDB

func (*StorageOptimizer) OptimizedRedisGet

func (so *StorageOptimizer) OptimizedRedisGet(ctx context.Context, key string, value interface{}) error

OptimizedRedisGet retrieves and decompresses data from Redis

func (*StorageOptimizer) OptimizedRedisSet

func (so *StorageOptimizer) OptimizedRedisSet(ctx context.Context, key string, value interface{}, ttl time.Duration) error

OptimizedRedisSet stores compressed data in Redis

func (*StorageOptimizer) RestoreDocument

func (so *StorageOptimizer) RestoreDocument(doc map[string]interface{}) (map[string]interface{}, error)

RestoreDocument restores a compacted/compressed document

Jump to

Keyboard shortcuts

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