Documentation
¶
Index ¶
- type ExpiringCache
- type MockExpiringCache
- func (_mock *MockExpiringCache[T]) Clear()
- func (_m *MockExpiringCache[T]) EXPECT() *MockExpiringCache_Expecter[T]
- func (_mock *MockExpiringCache[T]) Get(key string) (*T, time.Duration)
- func (_mock *MockExpiringCache[T]) Put(key string, val *T, expiration time.Duration)
- func (_mock *MockExpiringCache[T]) TotalCount() int
- type MockExpiringCache_Clear_Call
- type MockExpiringCache_Expecter
- func (_e *MockExpiringCache_Expecter[T]) Clear() *MockExpiringCache_Clear_Call[T]
- func (_e *MockExpiringCache_Expecter[T]) Get(key interface{}) *MockExpiringCache_Get_Call[T]
- func (_e *MockExpiringCache_Expecter[T]) Put(key interface{}, val interface{}, expiration interface{}) *MockExpiringCache_Put_Call[T]
- func (_e *MockExpiringCache_Expecter[T]) TotalCount() *MockExpiringCache_TotalCount_Call[T]
- type MockExpiringCache_Get_Call
- func (_c *MockExpiringCache_Get_Call[T]) Return(val *T, expiration time.Duration) *MockExpiringCache_Get_Call[T]
- func (_c *MockExpiringCache_Get_Call[T]) Run(run func(key string)) *MockExpiringCache_Get_Call[T]
- func (_c *MockExpiringCache_Get_Call[T]) RunAndReturn(run func(key string) (*T, time.Duration)) *MockExpiringCache_Get_Call[T]
- type MockExpiringCache_Put_Call
- func (_c *MockExpiringCache_Put_Call[T]) Return() *MockExpiringCache_Put_Call[T]
- func (_c *MockExpiringCache_Put_Call[T]) Run(run func(key string, val *T, expiration time.Duration)) *MockExpiringCache_Put_Call[T]
- func (_c *MockExpiringCache_Put_Call[T]) RunAndReturn(run func(key string, val *T, expiration time.Duration)) *MockExpiringCache_Put_Call[T]
- type MockExpiringCache_TotalCount_Call
- func (_c *MockExpiringCache_TotalCount_Call[T]) Return(n int) *MockExpiringCache_TotalCount_Call[T]
- func (_c *MockExpiringCache_TotalCount_Call[T]) Run(run func()) *MockExpiringCache_TotalCount_Call[T]
- func (_c *MockExpiringCache_TotalCount_Call[T]) RunAndReturn(run func() int) *MockExpiringCache_TotalCount_Call[T]
- type RedisExpiringCache
- type RedisOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ExpiringCache ¶
type ExpiringCache[T any] interface { // Put adds the value to the cache unter the passed key with expiration. If expiration <=0, entry will NOT be cached Put(key string, val *T, expiration time.Duration) // Get returns the value of cached entry with remained TTL. If entry is not cached, returns nil Get(key string) (val *T, expiration time.Duration) // TotalCount returns the total count of valid (not expired) elements TotalCount() int // Clear removes all cache entries Clear() }
type MockExpiringCache ¶ added in v0.29.0
MockExpiringCache is an autogenerated mock type for the ExpiringCache type
func NewMockExpiringCache ¶ added in v0.29.0
func NewMockExpiringCache[T any](t interface { mock.TestingT Cleanup(func()) }) *MockExpiringCache[T]
NewMockExpiringCache creates a new instance of MockExpiringCache. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.
func (*MockExpiringCache[T]) Clear ¶ added in v0.29.0
func (_mock *MockExpiringCache[T]) Clear()
Clear provides a mock function for the type MockExpiringCache
func (*MockExpiringCache[T]) EXPECT ¶ added in v0.29.0
func (_m *MockExpiringCache[T]) EXPECT() *MockExpiringCache_Expecter[T]
func (*MockExpiringCache[T]) Get ¶ added in v0.29.0
func (_mock *MockExpiringCache[T]) Get(key string) (*T, time.Duration)
Get provides a mock function for the type MockExpiringCache
func (*MockExpiringCache[T]) Put ¶ added in v0.29.0
func (_mock *MockExpiringCache[T]) Put(key string, val *T, expiration time.Duration)
Put provides a mock function for the type MockExpiringCache
func (*MockExpiringCache[T]) TotalCount ¶ added in v0.29.0
func (_mock *MockExpiringCache[T]) TotalCount() int
TotalCount provides a mock function for the type MockExpiringCache
type MockExpiringCache_Clear_Call ¶ added in v0.29.0
MockExpiringCache_Clear_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Clear'
func (*MockExpiringCache_Clear_Call[T]) Return ¶ added in v0.29.0
func (_c *MockExpiringCache_Clear_Call[T]) Return() *MockExpiringCache_Clear_Call[T]
func (*MockExpiringCache_Clear_Call[T]) Run ¶ added in v0.29.0
func (_c *MockExpiringCache_Clear_Call[T]) Run(run func()) *MockExpiringCache_Clear_Call[T]
func (*MockExpiringCache_Clear_Call[T]) RunAndReturn ¶ added in v0.29.0
func (_c *MockExpiringCache_Clear_Call[T]) RunAndReturn(run func()) *MockExpiringCache_Clear_Call[T]
type MockExpiringCache_Expecter ¶ added in v0.29.0
type MockExpiringCache_Expecter[T any] struct { // contains filtered or unexported fields }
func (*MockExpiringCache_Expecter[T]) Clear ¶ added in v0.29.0
func (_e *MockExpiringCache_Expecter[T]) Clear() *MockExpiringCache_Clear_Call[T]
Clear is a helper method to define mock.On call
func (*MockExpiringCache_Expecter[T]) Get ¶ added in v0.29.0
func (_e *MockExpiringCache_Expecter[T]) Get(key interface{}) *MockExpiringCache_Get_Call[T]
Get is a helper method to define mock.On call
- key string
func (*MockExpiringCache_Expecter[T]) Put ¶ added in v0.29.0
func (_e *MockExpiringCache_Expecter[T]) Put(key interface{}, val interface{}, expiration interface{}) *MockExpiringCache_Put_Call[T]
Put is a helper method to define mock.On call
- key string
- val *T
- expiration time.Duration
func (*MockExpiringCache_Expecter[T]) TotalCount ¶ added in v0.29.0
func (_e *MockExpiringCache_Expecter[T]) TotalCount() *MockExpiringCache_TotalCount_Call[T]
TotalCount is a helper method to define mock.On call
type MockExpiringCache_Get_Call ¶ added in v0.29.0
MockExpiringCache_Get_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Get'
func (*MockExpiringCache_Get_Call[T]) Return ¶ added in v0.29.0
func (_c *MockExpiringCache_Get_Call[T]) Return(val *T, expiration time.Duration) *MockExpiringCache_Get_Call[T]
func (*MockExpiringCache_Get_Call[T]) Run ¶ added in v0.29.0
func (_c *MockExpiringCache_Get_Call[T]) Run(run func(key string)) *MockExpiringCache_Get_Call[T]
func (*MockExpiringCache_Get_Call[T]) RunAndReturn ¶ added in v0.29.0
func (_c *MockExpiringCache_Get_Call[T]) RunAndReturn(run func(key string) (*T, time.Duration)) *MockExpiringCache_Get_Call[T]
type MockExpiringCache_Put_Call ¶ added in v0.29.0
MockExpiringCache_Put_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Put'
func (*MockExpiringCache_Put_Call[T]) Return ¶ added in v0.29.0
func (_c *MockExpiringCache_Put_Call[T]) Return() *MockExpiringCache_Put_Call[T]
func (*MockExpiringCache_Put_Call[T]) Run ¶ added in v0.29.0
func (_c *MockExpiringCache_Put_Call[T]) Run(run func(key string, val *T, expiration time.Duration)) *MockExpiringCache_Put_Call[T]
func (*MockExpiringCache_Put_Call[T]) RunAndReturn ¶ added in v0.29.0
func (_c *MockExpiringCache_Put_Call[T]) RunAndReturn(run func(key string, val *T, expiration time.Duration)) *MockExpiringCache_Put_Call[T]
type MockExpiringCache_TotalCount_Call ¶ added in v0.29.0
MockExpiringCache_TotalCount_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TotalCount'
func (*MockExpiringCache_TotalCount_Call[T]) Return ¶ added in v0.29.0
func (_c *MockExpiringCache_TotalCount_Call[T]) Return(n int) *MockExpiringCache_TotalCount_Call[T]
func (*MockExpiringCache_TotalCount_Call[T]) Run ¶ added in v0.29.0
func (_c *MockExpiringCache_TotalCount_Call[T]) Run(run func()) *MockExpiringCache_TotalCount_Call[T]
func (*MockExpiringCache_TotalCount_Call[T]) RunAndReturn ¶ added in v0.29.0
func (_c *MockExpiringCache_TotalCount_Call[T]) RunAndReturn(run func() int) *MockExpiringCache_TotalCount_Call[T]
type RedisExpiringCache ¶ added in v0.30.0
type RedisExpiringCache[T any] struct { // contains filtered or unexported fields }
RedisExpiringCache wraps an ExpiringCache[T] with transparent Redis write-through and pub/sub synchronisation across instances.
func NewRedisExpiringByteCache ¶ added in v0.30.0
func NewRedisExpiringByteCache( ctx context.Context, inner ExpiringCache[[]byte], client *goredis.Client, opts RedisOptions[[]byte], ) (*RedisExpiringCache[[]byte], error)
NewRedisExpiringByteCache creates a RedisExpiringCache for []byte values, using identity encode/decode when no codec is provided.
func NewRedisExpiringCache ¶ added in v0.30.0
func NewRedisExpiringCache[T any]( ctx context.Context, inner ExpiringCache[T], client *goredis.Client, opts RedisOptions[T], ) (*RedisExpiringCache[T], error)
NewRedisExpiringCache creates a new RedisExpiringCache decorator.
It performs a blocking startup scan of existing Redis keys and loads them into inner before launching the background writer and subscriber goroutines. The goroutines run until ctx is cancelled.
func (*RedisExpiringCache[T]) Clear ¶ added in v0.30.0
func (c *RedisExpiringCache[T]) Clear()
Clear removes all entries from the inner cache and from Redis (all keys matching the configured prefix).
func (*RedisExpiringCache[T]) Get ¶ added in v0.30.0
func (c *RedisExpiringCache[T]) Get(key string) (*T, time.Duration)
Get reads from the inner cache only.
func (*RedisExpiringCache[T]) Put ¶ added in v0.30.0
func (c *RedisExpiringCache[T]) Put(key string, val *T, expiration time.Duration)
Put stores the value in the inner cache immediately, then enqueues a non-blocking send to Redis. If the send buffer is full the entry is dropped and a warning is logged – the DNS path is never blocked.
func (*RedisExpiringCache[T]) TotalCount ¶ added in v0.30.0
func (c *RedisExpiringCache[T]) TotalCount() int
TotalCount delegates to the inner cache.
type RedisOptions ¶ added in v0.30.0
type RedisOptions[T any] struct { // Prefix is prepended to all Redis keys. Prefix string // Channel is the pub/sub channel name used for cross-instance sync. Channel string // Encode serializes a cache value to bytes. Encode func(*T) ([]byte, error) // Decode deserializes bytes back to a cache value. Decode func([]byte) (*T, error) // BatchSize is the maximum number of entries per Redis pipeline flush. BatchSize int // FlushInterval is the maximum time between flushes. FlushInterval time.Duration // SendBufSize is the capacity of the internal send buffer channel. SendBufSize int }
RedisOptions configures the RedisExpiringCache decorator.