Validator
The validator package runs background scans to compare cache entries with the primary storage.
Modes
ModeNoop- only records mismatches.
ModeAlert- suitable for logging or external alerting.
ModeAutoHeal- automatically refreshes the cache from the storage when a mismatch is detected.
API Reference
New
func New[T any](c cache.Cache[T], s adapter.Store[T], mode Mode, interval time.Duration) *Validator[T]
Creates a new Validator.
Run
func (v *Validator[T]) Run(ctx context.Context)
Starts the validation loop.
Metrics
func (v *Validator[T]) Metrics() uint64
Returns number of mismatches detected.
SetDigester
func (v *Validator[T]) SetDigester(d Digester[T])
Sets the digester used for value comparison.
Digester Interface
type Digester[T any] interface {
Digest(v T) (string, error)
}
JSONDigester
Default digester that serializes values using JSON and hashes them with SHA256.
Usage
cacheLayer := cache.NewInMemory[string]()
v := validator.New[string](cacheLayer, store, validator.ModeAutoHeal, time.Minute)
go v.Run(ctx)
Metrics reports the number of mismatches found during scans.