Documentation ¶
Index ¶
- Variables
- type Client
- func (c *Client) BatchDelete(ctx context.Context, keys [][]byte) error
- func (c *Client) BatchGet(ctx context.Context, keys [][]byte) ([][]byte, error)
- func (c *Client) BatchPut(ctx context.Context, keys, values [][]byte) error
- func (c *Client) BatchPutWithTTL(ctx context.Context, keys, values [][]byte, ttls []uint64) error
- func (c *Client) Close() error
- func (c *Client) ClusterID() uint64
- func (c *Client) CompareAndSwap(ctx context.Context, key, previousValue, newValue []byte) ([]byte, bool, error)
- func (c *Client) Delete(ctx context.Context, key []byte) error
- func (c *Client) DeleteRange(ctx context.Context, startKey []byte, endKey []byte) error
- func (c *Client) Get(ctx context.Context, key []byte) ([]byte, error)
- func (c *Client) GetKeyTTL(ctx context.Context, key []byte) (*uint64, error)
- func (c *Client) PrintStats(ctx context.Context, key []byte) error
- func (c *Client) Put(ctx context.Context, key, value []byte) error
- func (c *Client) PutWithTTL(ctx context.Context, key, value []byte, ttl uint64) error
- func (c *Client) ReverseScan(ctx context.Context, startKey, endKey []byte, limit int, options ...ScanOption) (keys [][]byte, values [][]byte, err error)
- func (c *Client) Scan(ctx context.Context, startKey, endKey []byte, limit int, options ...ScanOption) (keys [][]byte, values [][]byte, err error)
- func (c *Client) SetAtomicForCAS(b bool) *Client
- type ClientProbe
- type ConfigProbe
- type ScanOption
Constants ¶
This section is empty.
Variables ¶
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 ¶
BatchDelete deletes key-value pairs from TiKV.
func (*Client) BatchPutWithTTL ¶
BatchPutWithTTL stores key-values pairs to TiKV with time-to-live durations.
func (*Client) CompareAndSwap ¶
func (c *Client) CompareAndSwap(ctx context.Context, key, previousValue, newValue []byte) ([]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) DeleteRange ¶
DeleteRange deletes all key-value pairs in the [startKey, endKey) range from TiKV.
func (*Client) Get ¶
Get queries value with the key. When the key does not exist, it returns `nil, nil`.
func (*Client) PrintStats ¶
PrintStats directs TiKV to print the current rocksdb stats to a log file
func (*Client) PutWithTTL ¶
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, options ...ScanOption) (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, options ...ScanOption) (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 ¶
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.
type ScanOption ¶
type ScanOption interface {
// contains filtered or unexported methods
}
ScanOption represents possible scan options that can be cotrolled by the user to tweak the scanning behavior.
Available options are: - ScanKeyOnly - ScanColumnFamily
func ScanColumnFamily ¶
func ScanColumnFamily(columnfamily string) ScanOption
ScanColumnFamily is a ScanOption that tells the scanner to only returns the following column family elements.
func ScanKeyOnly ¶
func ScanKeyOnly() ScanOption
ScanKeyOnly is a ScanOption that tells the scanner to only returns keys and omit the values.