redisethdb

package module
v0.0.0-...-f5f758e Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2021 License: AGPL-3.0 Imports: 11 Imported by: 0

README

redis-ethdb

Go Report Card

go-ethereum ethdb interfaces for Ethereum state data stored in Redis

Maintainers

@vulcanize @AFDudley @i-norden

Contributing

Contributions are welcome!

VulcanizeDB follows the Contributor Covenant Code of Conduct.

License

AGPL-3.0 © Vulcanize Inc

Documentation

Index

Constants

View Source
const (
	/*
		Pool stats
	*/
	HITS         = "Hits"
	MISSES       = "Misses"
	TIMEOUTS     = "Timeouts"
	TOTAL_CONNS  = "TotalConns"
	IDLE_CONNS   = "IdleConns"
	STABLE_CONNS = "StaleConns"

	/*
		Data stats
	*/
	DB_SIZE = "DbSize"

	/*
		Info stats
	*/
	SERVER_INFO        = "Server"
	CLIENTS_INFO       = "Clients"
	MEMORY_INFO        = "Memory"
	PERSISTENCE_INFO   = "Persistence"
	STATS_INFO         = "Stats"
	REPLICATION_INFO   = "Replication"
	CPU_INFO           = "CPU"
	COMMAND_STATS_INFO = "Command"
	CLUSTER_INFO       = "Cluster"
	MODULES_INFO       = "Modules"
	KEYSPACE_INFO      = "Keyspace"
	ERROR_STATS_INFO   = "Errors"
	ALL_INFO           = "All"
	DEFAULT_INFO       = "Default"
	EVERYTHING         = "Everything"
)

Variables

This section is empty.

Functions

func NewBatch

func NewBatch(ctx context.Context, b Batching) ethdb.Batch

NewBatch creates a new Batch

func NewClientDatabase

func NewClientDatabase(ctx context.Context, cl *redis.Client) ethdb.Database

NewClientDatabase creates a redis-ethdb using a Client

func NewClusterDatabase

func NewClusterDatabase(ctx context.Context, cl *redis.ClusterClient) ethdb.Database

NewClusterDatabase creates a redis-ethdb using a ClusterClient

func NewDatabase

func NewDatabase(ctx context.Context, r Redis) ethdb.Database

NewDatabase creates a new Database

func NewIterator

func NewIterator(ctx context.Context, prefix string, scanSize int64, it Iterating) ethdb.Iterator

NewIterator creates a new Iterator

func NewRingDatabase

func NewRingDatabase(ctx context.Context, cl *redis.Ring) ethdb.Database

NewRingDatabase creates a redis-ethdb using a Ring

Types

type Batch

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

Batch implements ethdb.Batch on top of Redis using pipelined transactions

func (Batch) Delete

func (b Batch) Delete(key []byte) error

Delete satisfies ethdb.Batch

func (Batch) Put

func (b Batch) Put(key []byte, value []byte) error

Put satisfies ethdb.Batch

func (Batch) Replay

func (b Batch) Replay(w ethdb.KeyValueWriter) error

Replay satisfies ethdb.Batch

func (Batch) Reset

func (b Batch) Reset()

Reset satisfies ethdb.Batch

func (Batch) ValueSize

func (b Batch) ValueSize() int

ValueSize satisfies ethdb.Batch it returns it in units of GB

func (Batch) Write

func (b Batch) Write() error

Write satisfies ethdb.Batch

type Batching

type Batching interface {
	Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd
	Del(ctx context.Context, keys ...string) *redis.IntCmd
	Discard() error
	Exec(ctx context.Context) ([]redis.Cmder, error)
}

Batching redis interface required for supporting ethdb.Batch

type Database

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

Database implements ethdb.Database on top of Redis

func (*Database) Ancient

func (db *Database) Ancient(string, uint64) ([]byte, error)

Ancient satisfies ethdb.AncientReader

func (*Database) AncientSize

func (db *Database) AncientSize(string) (uint64, error)

AncientSize satisfies ethdb.AncientReader

func (*Database) Ancients

func (db *Database) Ancients() (uint64, error)

Ancients satisfies ethdb.AncientReader

func (*Database) Close

func (db *Database) Close() error

Close satisfies io.Closer

func (*Database) Compact

func (db *Database) Compact([]byte, []byte) error

Compact satisfies ethdb.Compacter

func (*Database) Delete

func (db *Database) Delete(key []byte) error

Delete satisfies ethdb.KeyValueWriter

func (*Database) Get

func (db *Database) Get(key []byte) ([]byte, error)

Get satisfies ethdb.KeyValueReader

func (*Database) Has

func (db *Database) Has(key []byte) (bool, error)

Has satisfies ethdb.KeyValueReader

func (*Database) HasAncient

func (db *Database) HasAncient(string, uint64) (bool, error)

HasAncient satisfies ethdb.AncientReader

func (*Database) ModifyAncients

func (db *Database) ModifyAncients(func(ethdb.AncientWriteOp) error) (int64, error)

ModifyAncients satisfies ethdb.AncientWriter

func (*Database) NewBatch

func (db *Database) NewBatch() ethdb.Batch

NewBatch satisfies ethdb.Batcher

func (*Database) NewIterator

func (db *Database) NewIterator(prefix, _ []byte) ethdb.Iterator

NewIterator satisfies ethdb.Iteratee Note: there is no practical way to have Redis begin iteration at an arbitrary "start" key, so this arg is discarded

func (*Database) Put

func (db *Database) Put(key, value []byte) error

Put satisfies ethdb.KeyValueWriter

func (*Database) ReadAncients

func (db *Database) ReadAncients(string, uint64, uint64, uint64) ([][]byte, error)

ReadAncients satisfies ethdb.AncientReader

func (*Database) Stat

func (db *Database) Stat(property string) (string, error)

Stat satisfies ethdb.Stater

func (*Database) Sync

func (db *Database) Sync() error

Sync satisfies ethdb.AncientWriter

func (*Database) TruncateAncients

func (db *Database) TruncateAncients(uint64) error

TruncateAncients satisfies ethdb.AncientWriter

type Iterating

type Iterating interface {
	Scan(ctx context.Context, cursor uint64, match string, count int64) *redis.ScanCmd
	MGet(ctx context.Context, keys ...string) *redis.SliceCmd
	io.Closer
}

Iterating redis interface required for supporting ethdb.Iterator

type Iterator

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

Iterator implements ethdb.Iterator on top of Redis using scans it is not safe for concurrent use, but multiple iterators can act concurrently on the same DB

func (*Iterator) Error

func (i *Iterator) Error() error

Error satisfies ethdb.Iterator

func (*Iterator) Key

func (i *Iterator) Key() []byte

Key satisfies ethdb.Iterator

func (*Iterator) Next

func (i *Iterator) Next() bool

Next satisfies ethdb.Iterator

func (*Iterator) Release

func (i *Iterator) Release()

Release satisfies ethdb.Iterator

func (*Iterator) Value

func (i *Iterator) Value() []byte

Value satisfies ethdb.Iterator

type Redis

type Redis interface {
	// Database interfaces
	Get(ctx context.Context, key string) *redis.StringCmd
	Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd
	Exists(ctx context.Context, keys ...string) *redis.IntCmd
	Del(ctx context.Context, keys ...string) *redis.IntCmd

	// Iterator interfaces
	Scan(ctx context.Context, cursor uint64, match string, count int64) *redis.ScanCmd
	MGet(ctx context.Context, keys ...string) *redis.SliceCmd

	// Batch interfaces
	TxPipeline() redis.Pipeliner

	// Stats interfaces
	PoolStats() *redis.PoolStats
	DBSize(ctx context.Context) *redis.IntCmd
	Info(ctx context.Context, section ...string) *redis.StringCmd

	io.Closer
}

Redis interface required for supporting ethdb interfaces

type Stat

type Stat string

Stat typed string

func (Stat) String

func (s Stat) String() string

Jump to

Keyboard shortcuts

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