You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
991 B

3 years ago
3 years ago
3 years ago
  1. // +build tikv
  2. package tikv
  3. import (
  4. "context"
  5. "github.com/chrislusf/seaweedfs/weed/filer"
  6. "github.com/tikv/client-go/v2/txnkv"
  7. )
  8. func (store *TikvStore) KvPut(ctx context.Context, key []byte, value []byte) error {
  9. tw, err := store.getTxn(ctx)
  10. if err != nil {
  11. return err
  12. }
  13. return tw.RunInTxn(func(txn *txnkv.KVTxn) error {
  14. return txn.Set(key, value)
  15. })
  16. }
  17. func (store *TikvStore) KvGet(ctx context.Context, key []byte) ([]byte, error) {
  18. tw, err := store.getTxn(ctx)
  19. if err != nil {
  20. return nil, err
  21. }
  22. var data []byte = nil
  23. err = tw.RunInTxn(func(txn *txnkv.KVTxn) error {
  24. val, err := txn.Get(context.TODO(), key)
  25. if err == nil {
  26. data = val
  27. }
  28. return err
  29. })
  30. if isNotExists(err) {
  31. return data, filer.ErrKvNotFound
  32. }
  33. return data, err
  34. }
  35. func (store *TikvStore) KvDelete(ctx context.Context, key []byte) error {
  36. tw, err := store.getTxn(ctx)
  37. if err != nil {
  38. return err
  39. }
  40. return tw.RunInTxn(func(txn *txnkv.KVTxn) error {
  41. return txn.Delete(key)
  42. })
  43. }