Documentation
¶
Index ¶
- Variables
- func MultiErrors(resp []rueidis.RedisResult) []error
- func PrefixedInt64Key(prefix string, key int64) string
- func UnixDialer(addr string, dialer *net.Dialer, tlsConfig *tls.Config) (net.Conn, error)
- type ErrCacher
- type ErrMarshaler
- type ExpiringHash
- func (h *ExpiringHash[K1, K2]) Clear(ctx context.Context) (int, error)
- func (h *ExpiringHash[K1, K2]) Forget(key K1, hashKey K2)
- func (h *ExpiringHash[K1, K2]) GC() func(context.Context) (int, error)
- func (h *ExpiringHash[K1, K2]) Len(ctx context.Context, key K1) (size int64, retErr error)
- func (h *ExpiringHash[K1, K2]) Refresh(ctx context.Context, nextRefresh time.Time) error
- func (h *ExpiringHash[K1, K2]) Scan(ctx context.Context, key K1, cb ScanCallback) (int, error)
- func (h *ExpiringHash[K1, K2]) Set(ctx context.Context, key K1, hashKey K2, value []byte) error
- func (h *ExpiringHash[K1, K2]) Unset(ctx context.Context, key K1, hashKey K2) error
- type ExpiringHashInterface
- type ExpiringValue
- func (*ExpiringValue) Descriptor() ([]byte, []int)deprecated
- func (x *ExpiringValue) GetExpiresAt() int64
- func (x *ExpiringValue) GetValue() []byte
- func (*ExpiringValue) ProtoMessage()
- func (x *ExpiringValue) ProtoReflect() protoreflect.Message
- func (x *ExpiringValue) Reset()
- func (x *ExpiringValue) String() string
- type ExpiringValueTimestamp
- func (*ExpiringValueTimestamp) Descriptor() ([]byte, []int)deprecated
- func (x *ExpiringValueTimestamp) GetExpiresAt() int64
- func (*ExpiringValueTimestamp) ProtoMessage()
- func (x *ExpiringValueTimestamp) ProtoReflect() protoreflect.Message
- func (x *ExpiringValueTimestamp) Reset()
- func (x *ExpiringValueTimestamp) String() string
- type KeyToRedisKey
- type RpcApi
- type ScanCallback
- type TokenLimiter
Constants ¶
This section is empty.
Variables ¶
View Source
var File_internal_tool_redistool_redistool_proto protoreflect.FileDescriptor
Functions ¶
func MultiErrors ¶ added in v16.3.0
func MultiErrors(resp []rueidis.RedisResult) []error
func PrefixedInt64Key ¶
Types ¶
type ErrCacher ¶
type ErrCacher[K any] struct { Log *zap.Logger ErrRep errz.ErrReporter Client rueidis.Client ErrMarshaler ErrMarshaler KeyToRedisKey KeyToRedisKey[K] }
func (*ErrCacher[K]) CacheError ¶
type ErrMarshaler ¶
type ExpiringHash ¶
type ExpiringHash[K1 comparable, K2 comparable] struct { // contains filtered or unexported fields }
func NewExpiringHash ¶
func NewExpiringHash[K1 comparable, K2 comparable](client rueidis.Client, key1ToRedisKey KeyToRedisKey[K1], key2ToRedisKey KeyToRedisKey[K2], ttl time.Duration) *ExpiringHash[K1, K2]
func (*ExpiringHash[K1, K2]) Clear ¶
func (h *ExpiringHash[K1, K2]) Clear(ctx context.Context) (int, error)
func (*ExpiringHash[K1, K2]) Forget ¶
func (h *ExpiringHash[K1, K2]) Forget(key K1, hashKey K2)
func (*ExpiringHash[K1, K2]) GC ¶
func (h *ExpiringHash[K1, K2]) GC() func(context.Context) (int, error)
func (*ExpiringHash[K1, K2]) Len ¶
func (h *ExpiringHash[K1, K2]) Len(ctx context.Context, key K1) (size int64, retErr error)
func (*ExpiringHash[K1, K2]) Scan ¶
func (h *ExpiringHash[K1, K2]) Scan(ctx context.Context, key K1, cb ScanCallback) (int, error)
type ExpiringHashInterface ¶
type ExpiringHashInterface[K1 any, K2 any] interface { Set(ctx context.Context, key K1, hashKey K2, value []byte) error Unset(ctx context.Context, key K1, hashKey K2) error // Forget only removes the item from the in-memory map. Forget(key K1, hashKey K2) // Scan iterates key-value pairs for key. It removes any expired entries it finds. // Safe for concurrent use. Scan(ctx context.Context, key K1, cb ScanCallback) (int, error) // Len returns number of key-value mappings in the hash identified by key. Len(ctx context.Context, key K1) (int64, error) // GC returns a function that iterates all relevant stored data and deletes expired entries. // The returned function can be called concurrently as it does not interfere with the hash's operation. // The function returns number of deleted Redis (hash) keys, including when an error occurred. // It only inspects/GCs hashes where it has entries. Other concurrent clients GC same and/or other corresponding hashes. // Hashes that don't have a corresponding client (e.g. because it crashed) will expire because of TTL on the hash key. // GC only needs to be used if Len() is used. Otherwise expired entries will be found and deleted by Scan(). GC() func(context.Context) (int, error) // Clear clears all data in this hash and deletes it from the backing store. Clear(context.Context) (int, error) // Refresh refreshes data in the backing store to prevent it from expiring. Refresh(ctx context.Context, nextRefresh time.Time) error }
ExpiringHashInterface represents a two-level hash: key K1 -> hashKey K2 -> value []byte. key identifies the hash; hashKey identifies the key in the hash; value is the value for the hashKey. It is not safe for concurrent use.
type ExpiringValue ¶
type ExpiringValue struct { ExpiresAt int64 `protobuf:"varint,1,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // contains filtered or unexported fields }
func (*ExpiringValue) Descriptor
deprecated
func (*ExpiringValue) Descriptor() ([]byte, []int)
Deprecated: Use ExpiringValue.ProtoReflect.Descriptor instead.
func (*ExpiringValue) GetExpiresAt ¶
func (x *ExpiringValue) GetExpiresAt() int64
func (*ExpiringValue) GetValue ¶
func (x *ExpiringValue) GetValue() []byte
func (*ExpiringValue) ProtoMessage ¶
func (*ExpiringValue) ProtoMessage()
func (*ExpiringValue) ProtoReflect ¶
func (x *ExpiringValue) ProtoReflect() protoreflect.Message
func (*ExpiringValue) Reset ¶
func (x *ExpiringValue) Reset()
func (*ExpiringValue) String ¶
func (x *ExpiringValue) String() string
type ExpiringValueTimestamp ¶
type ExpiringValueTimestamp struct { ExpiresAt int64 `protobuf:"varint,1,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // contains filtered or unexported fields }
func (*ExpiringValueTimestamp) Descriptor
deprecated
func (*ExpiringValueTimestamp) Descriptor() ([]byte, []int)
Deprecated: Use ExpiringValueTimestamp.ProtoReflect.Descriptor instead.
func (*ExpiringValueTimestamp) GetExpiresAt ¶
func (x *ExpiringValueTimestamp) GetExpiresAt() int64
func (*ExpiringValueTimestamp) ProtoMessage ¶
func (*ExpiringValueTimestamp) ProtoMessage()
func (*ExpiringValueTimestamp) ProtoReflect ¶
func (x *ExpiringValueTimestamp) ProtoReflect() protoreflect.Message
func (*ExpiringValueTimestamp) Reset ¶
func (x *ExpiringValueTimestamp) Reset()
func (*ExpiringValueTimestamp) String ¶
func (x *ExpiringValueTimestamp) String() string
type KeyToRedisKey ¶
KeyToRedisKey is used to convert typed key (key1 or key2) into a string. HSET key1 key2 value.
type ScanCallback ¶
type TokenLimiter ¶
type TokenLimiter struct {
// contains filtered or unexported fields
}
TokenLimiter is a redis-based rate limiter implementing the algorithm in https://redislabs.com/redis-best-practices/basic-rate-limiting/
func NewTokenLimiter ¶
func NewTokenLimiter(redisClient rueidis.Client, keyPrefix string, limitPerMinute uint64, limitExceeded prometheus.Counter, getApi func(context.Context) RpcApi) *TokenLimiter
NewTokenLimiter returns a new TokenLimiter
Click to show internal directories.
Click to hide internal directories.