rawkv

package
v2.5.4 Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2022 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// MaxRawKVScanLimit is the maximum scan limit for rawkv Scan.
	MaxRawKVScanLimit = 10240
	// ErrMaxScanLimitExceeded is returned when the limit for rawkv Scan is to large.
	ErrMaxScanLimitExceeded = errors.New("limit should be less than MaxRawKVScanLimit")
)

Functions

This section is empty.

Types

type Client

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

Client is a client of TiKV server which is used as a key-value storage, only GET/PUT/DELETE commands are supported.

func NewClient

func NewClient(ctx context.Context, pdAddrs []string, security config.Security, opts ...pd.ClientOption) (*Client, error)

NewClient creates a client with PD cluster addrs.

func (*Client) BatchDelete

func (c *Client) BatchDelete(ctx context.Context, keys [][]byte) error

BatchDelete deletes key-value pairs from TiKV.

func (*Client) BatchDeleteRange

func (c *Client) BatchDeleteRange(ctx context.Context, startKey []byte, endKey []byte, batchSize int) error

DeleteRange deletes all key-value pairs in a range from TiKV.

func (*Client) BatchGet

func (c *Client) BatchGet(ctx context.Context, keys [][]byte) ([][]byte, error)

BatchGet queries values with the keys.

func (*Client) BatchPut

func (c *Client) BatchPut(ctx context.Context, keys, values [][]byte, ttls []uint64) error

BatchPut stores key-value pairs to TiKV.

func (*Client) Close

func (c *Client) Close() error

Close closes the client.

func (*Client) ClusterID

func (c *Client) ClusterID() uint64

ClusterID returns the TiKV cluster ID.

func (*Client) CompareAndSwap

func (c *Client) CompareAndSwap(ctx context.Context, key, previousValue, newValue []byte, ttl uint64) ([]byte, bool, error)

CompareAndSwap results in an atomic compare-and-set operation for the given key while SetAtomicForCAS(true) If the value retrieved is equal to previousValue, newValue is written. It returns the previous value and whether the value is successfully swapped.

If SetAtomicForCAS(false), it will returns an error because CAS operations enforce the client should operate in atomic mode.

NOTE: This feature is experimental. It depends on the single-row transaction mechanism of TiKV which is conflict with the normal write operation in rawkv mode. If multiple clients exist, it's up to the clients the sync the atomic mode flag. If some clients write in atomic mode but the other don't, the linearizability of TiKV will be violated.

func (*Client) Delete

func (c *Client) Delete(ctx context.Context, key []byte) error

Delete deletes a key-value pair from TiKV.

func (*Client) DeleteRange

func (c *Client) DeleteRange(ctx context.Context, startKey []byte, endKey []byte) error

DeleteRange deletes all key-value pairs in a range from TiKV.

func (*Client) Get

func (c *Client) Get(ctx context.Context, key []byte) ([]byte, error)

Get queries value with the key. When the key does not exist, it returns `nil, nil`.

func (*Client) GetKeyTTL

func (c *Client) GetKeyTTL(ctx context.Context, key []byte) (*uint64, error)

GetKeyTTL get the TTL of a raw key from TiKV if key exists

func (*Client) Put

func (c *Client) Put(ctx context.Context, key, value []byte) error

Put stores a key-value pair to TiKV.

func (*Client) PutWithTTL

func (c *Client) PutWithTTL(ctx context.Context, key, value []byte, ttl uint64) error

PutWithTTL stores a key-value pair to TiKV with a time-to-live duration.

func (*Client) ReverseScan

func (c *Client) ReverseScan(ctx context.Context, startKey, endKey []byte, limit int) (keys [][]byte, values [][]byte, err error)

ReverseScan queries continuous kv pairs in range [endKey, startKey), up to limit pairs. Direction is different from Scan, upper to lower. If endKey is empty, it means unbounded. If you want to include the startKey or exclude the endKey, push a '\0' to the key. For example, to scan (endKey, startKey], you can write: `ReverseScan(ctx, push(startKey, '\0'), push(endKey, '\0'), limit)`. It doesn't support Scanning from "", because locating the last Region is not yet implemented.

func (*Client) Scan

func (c *Client) Scan(ctx context.Context, startKey, endKey []byte, limit int) (keys [][]byte, values [][]byte, err error)

Scan queries continuous kv pairs in range [startKey, endKey), up to limit pairs. If endKey is empty, it means unbounded. If you want to exclude the startKey or include the endKey, push a '\0' to the key. For example, to scan (startKey, endKey], you can write: `Scan(ctx, push(startKey, '\0'), push(endKey, '\0'), limit)`.

func (*Client) SetAtomicForCAS

func (c *Client) SetAtomicForCAS(b bool) *Client

SetAtomicForCAS sets atomic mode for CompareAndSwap

type ClientProbe

type ClientProbe struct {
	*Client
}

ClientProbe wraps RawKVClient and exposes internal states for testing purpose.

func (ClientProbe) GetRegionCache

func (c ClientProbe) GetRegionCache() *locate.RegionCache

GetRegionCache returns the internal region cache container.

func (ClientProbe) SetPDClient

func (c ClientProbe) SetPDClient(client pd.Client)

SetPDClient resets the interval PD client.

func (ClientProbe) SetRPCClient

func (c ClientProbe) SetRPCClient(client client.Client)

SetRPCClient resets the internal RPC client.

func (ClientProbe) SetRegionCache

func (c ClientProbe) SetRegionCache(regionCache *locate.RegionCache)

SetRegionCache resets the internal region cache container.

type ConfigProbe

type ConfigProbe struct{}

ConfigProbe exposes configurations and global variables for testing purpose.

func (ConfigProbe) GetRawBatchPutSize

func (c ConfigProbe) GetRawBatchPutSize() int

GetRawBatchPutSize returns the raw batch put size config.

Jump to

Keyboard shortcuts

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