cache

package
v0.45.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2023 License: Apache-2.0 Imports: 9 Imported by: 1

Documentation

Index

Constants

View Source
const (
	DefaultCommitKVStoreCacheSize = 1024 * 1024 * 100 // 100 MB
)
View Source
const (
	// MetricsSubsystem is a subsystem shared by all metrics exposed by this
	// package.
	MetricsSubsystem = "inter_block_cache"
)

Variables

This section is empty.

Functions

func NopMetricsProvider added in v0.45.0

func NopMetricsProvider() func() *Metrics

NopMetricsProvider returns NopMetrics for each store

func PrometheusMetricsProvider added in v0.45.0

func PrometheusMetricsProvider(namespace string, labelsAndValues ...string) func() *Metrics

PrometheusMetricsProvider returns PrometheusMetrics for each store

Types

type CommitKVStoreCache

type CommitKVStoreCache struct {
	types.CommitKVStore
	// contains filtered or unexported fields
}

CommitKVStoreCache implements an inter-block (persistent) cache that wraps a CommitKVStore. Reads first hit the internal ARC (Adaptive Replacement Cache). During a cache miss, the read is delegated to the underlying CommitKVStore and cached. Deletes and writes always happen to both the cache and the CommitKVStore in a write-through manner. Caching performed in the CommitKVStore and below is completely irrelevant to this layer.

func NewCommitKVStoreCache

func NewCommitKVStoreCache(store types.CommitKVStore, prefix []byte, cache *fastcache.Cache,
	metrics *Metrics) *CommitKVStoreCache

func (*CommitKVStoreCache) CacheWrap

func (ckv *CommitKVStoreCache) CacheWrap() types.CacheWrap

CacheWrap implements the CacheWrapper interface

func (*CommitKVStoreCache) Delete

func (ckv *CommitKVStoreCache) Delete(key []byte)

Delete removes a key/value pair from both the write-through cache and the underlying CommitKVStore.

func (*CommitKVStoreCache) Get

func (ckv *CommitKVStoreCache) Get(key []byte) []byte

Get retrieves a value by key. It will first look in the write-through cache. If the value doesn't exist in the write-through cache, the query is delegated to the underlying CommitKVStore.

func (*CommitKVStoreCache) Set

func (ckv *CommitKVStoreCache) Set(key, value []byte)

Set inserts a key/value pair into both the write-through cache and the underlying CommitKVStore.

type CommitKVStoreCacheManager

type CommitKVStoreCacheManager struct {
	// contains filtered or unexported fields
}

CommitKVStoreCacheManager maintains a mapping from a StoreKey to a CommitKVStoreCache. Each CommitKVStore, per StoreKey, is meant to be used in an inter-block (persistent) manner and typically provided by a CommitMultiStore.

func NewCommitKVStoreCacheManager

func NewCommitKVStoreCacheManager(cacheSize int, provider MetricsProvider) *CommitKVStoreCacheManager

func (*CommitKVStoreCacheManager) GetStoreCache

GetStoreCache returns a Cache from the CommitStoreCacheManager for a given StoreKey. If no Cache exists for the StoreKey, then one is created and set. The returned Cache is meant to be used in a persistent manner.

func (*CommitKVStoreCacheManager) Reset

func (cmgr *CommitKVStoreCacheManager) Reset()

Reset resets in the internal caches.

func (*CommitKVStoreCacheManager) Unwrap

Unwrap returns the underlying CommitKVStore for a given StoreKey.

type Metrics added in v0.45.0

type Metrics struct {
	InterBlockCacheHits    metrics.Counter
	InterBlockCacheMisses  metrics.Counter
	InterBlockCacheEntries metrics.Gauge
	InterBlockCacheBytes   metrics.Gauge
}

Metrics contains metrics exposed by this package.

func NopMetrics added in v0.45.0

func NopMetrics() *Metrics

NopMetrics returns no-op Metrics.

func PrometheusMetrics added in v0.45.0

func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics

PrometheusMetrics returns Metrics build using Prometheus client library. Optionally, labels can be provided along with their values ("foo", "fooValue").

type MetricsProvider added in v0.45.0

type MetricsProvider func() *Metrics

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL