Referensi API Driver & Interface
Package distlimit mendefinisikan kontrak penyimpanan dan konstruktor driver.
Interface Driver
Section titled “Interface Driver”Interface Driver mengabstraksikan engine penyimpanan key dan persistensi evaluasi.
type Driver interface { Allow(ctx context.Context, key string, limit int64, window time.Duration, algo algorithm.Algorithm) (Result, error) Reset(ctx context.Context, key string) error Close(ctx context.Context) error Name() string}Driver Memory (driver/memory)
Section titled “Driver Memory (driver/memory)”import "github.com/balramadan/distlimit/driver/memory"Membuat driver penyimpanan in-memory 64-shard dengan rutin pembersihan TTL key di background.
func New(cleanupInterval time.Duration) *DriverDriver Redis (driver/redis)
Section titled “Driver Redis (driver/redis)”import "github.com/balramadan/distlimit/driver/redis"Membuat driver penyimpanan Redis terdistribusi yang memanfaatkan skrip Lua atomik dan hash tag {}.
func New(client redis.UniversalClient) *DriverDriver Hybrid (driver/hybrid)
Section titled “Driver Hybrid (driver/hybrid)”import "github.com/balramadan/distlimit/driver/hybrid"Membuat driver tangguh dua tingkat yang melapisi Driver Redis Utama di atas Driver Fallback In-Memory dengan failover Half-Open Circuit Breaker.
func New(primary distlimit.Driver, fallback distlimit.Driver, opts ...Option) *DriverWithCoolOffDuration(duration): Mengatur durasi untuk bertahan dalam mode fallback setelah Redis gagal (Default:5s).WithOnError(fn): Mendaftarkan callback error saat failover Redis terpicu.