pebble.go 641 B

123456789101112131415161718192021222324252627282930313233343536
  1. package storage
  2. import (
  3. "github.com/cockroachdb/pebble"
  4. "log"
  5. )
  6. var db *pebble.DB
  7. func init() {
  8. newDB, err := pebble.Open("vpn.db", &pebble.Options{})
  9. if err != nil {
  10. log.Fatalf("err: %+v", err)
  11. }
  12. db = newDB
  13. }
  14. func get(key string) ([]byte, error) {
  15. value, closer, err := db.Get([]byte(key))
  16. if err != nil {
  17. return nil, err
  18. }
  19. if err == pebble.ErrNotFound {
  20. return []byte{}, nil
  21. }
  22. newValue := make([]byte, len(value))
  23. copy(newValue, value)
  24. if err := closer.Close(); err != nil {
  25. return nil, err
  26. }
  27. return newValue, nil
  28. }
  29. func set(key string, value []byte) error {
  30. return db.Set([]byte(key), value, pebble.Sync)
  31. }