Lewati ke konten

Referensi API Driver & Interface

Package distlimit mendefinisikan kontrak penyimpanan dan konstruktor 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
}

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) *Driver

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) *Driver

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) *Driver
  • WithCoolOffDuration(duration): Mengatur durasi untuk bertahan dalam mode fallback setelah Redis gagal (Default: 5s).
  • WithOnError(fn): Mendaftarkan callback error saat failover Redis terpicu.