Documentation
¶
Index ¶
- Variables
- type Client
- func (c *Client) BatchDelete(ctx context.Context, keys [][]byte, options ...RawOption) error
- func (c *Client) BatchGet(ctx context.Context, keys [][]byte, options ...RawOption) ([][]byte, error)
- func (c *Client) BatchPut(ctx context.Context, keys, values [][]byte, options ...RawOption) 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, options ...RawOption) ([]byte, bool, error)
- func (c *Client) Delete(ctx context.Context, key []byte, options ...RawOption) error
- func (c *Client) DeleteRange(ctx context.Context, startKey []byte, endKey []byte, options ...RawOption) error
- func (c *Client) Get(ctx context.Context, key []byte, options ...RawOption) ([]byte, error)
- func (c *Client) GetKeyTTL(ctx context.Context, key []byte, options ...RawOption) (*uint64, error)
- func (c *Client) Put(ctx context.Context, key, value []byte, options ...RawOption) error
- func (c *Client) PutWithTTL(ctx context.Context, key, value []byte, ttl uint64, options ...RawOption) error
- func (c *Client) ReverseScan(ctx context.Context, startKey, endKey []byte, limit int, options ...RawOption) (keys [][]byte, values [][]byte, err error)
- func (c *Client) Scan(ctx context.Context, startKey, endKey []byte, limit int, options ...RawOption) (keys [][]byte, values [][]byte, err error)
- func (c *Client) SetAtomicForCAS(b bool) *Client
- func (c *Client) SetColumnFamily(columnFamily string) *Client
- type ClientProbe
- type ConfigProbe
- type RawOption
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) BatchGet ¶
func (c *Client) BatchGet(ctx context.Context, keys [][]byte, options ...RawOption) ([][]byte, error)
BatchGet queries values with the keys.
func (*Client) BatchPutWithTTL ¶
func (c *Client) BatchPutWithTTL(ctx context.Context, keys, values [][]byte, ttls []uint64, options ...RawOption) error
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, options ...RawOption) ([]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 ¶
func (c *Client) DeleteRange(ctx context.Context, startKey []byte, endKey []byte, options ...RawOption) error
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) PutWithTTL ¶
func (c *Client) PutWithTTL(ctx context.Context, key, value []byte, ttl uint64, options ...RawOption) 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, options ...RawOption) (keys [][]byte, values [][]byte, err error)
ReverseScan queries continuous kv pairs in range [endKey, startKey), up to limit pairs. The returned keys are in reversed lexicographical order. 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 ...RawOption, ) (keys [][]byte, values [][]byte, err error)
Scan queries continuous kv pairs in range [startKey, endKey), up to limit pairs. The returned keys are in lexicographical order. 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
func (*Client) SetColumnFamily ¶
SetColumnFamily sets columnFamily for client
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 RawOption ¶
type RawOption interface {
// contains filtered or unexported methods
}
RawOption represents possible options that can be cotrolled by the user to tweak the API behavior.
Available options are: - ScanColumnFamily - ScanKeyOnly
func ScanKeyOnly ¶
func ScanKeyOnly() RawOption
ScanKeyOnly is a rawkvOptions that tells the scanner to only returns keys and omit the values. It can work only in API scan().
func SetColumnFamily ¶
SetColumnFamily is a RawkvOption to only manipulate the k-v in specified column family