github.com/ulule/limiter/v3@v3.11.3-0.20230613131926-4cb9c1da4633/store.go (about)

     1  package limiter
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  )
     7  
     8  // Store is the common interface for limiter stores.
     9  type Store interface {
    10  	// Get returns the limit for given identifier.
    11  	Get(ctx context.Context, key string, rate Rate) (Context, error)
    12  	// Peek returns the limit for given identifier, without modification on current values.
    13  	Peek(ctx context.Context, key string, rate Rate) (Context, error)
    14  	// Reset resets the limit to zero for given identifier.
    15  	Reset(ctx context.Context, key string, rate Rate) (Context, error)
    16  	// Increment increments the limit by given count & gives back the new limit for given identifier
    17  	Increment(ctx context.Context, key string, count int64, rate Rate) (Context, error)
    18  }
    19  
    20  // StoreOptions are options for store.
    21  type StoreOptions struct {
    22  	// Prefix is the prefix to use for the key.
    23  	Prefix string
    24  
    25  	// MaxRetry is the maximum number of retry under race conditions on redis store.
    26  	// Deprecated: this option is no longer required since all operations are atomic now.
    27  	MaxRetry int
    28  
    29  	// CleanUpInterval is the interval for cleanup (run garbage collection) on stale entries on memory store.
    30  	// Setting this to a low value will optimize memory consumption, but will likely
    31  	// reduce performance and increase lock contention.
    32  	// Setting this to a high value will maximum throughput, but will increase the memory footprint.
    33  	CleanUpInterval time.Duration
    34  }