package storage import ( "bytes" "github.com/syndtr/goleveldb/leveldb" ) // LevelDBStorage 封装LevelDB基础操作 type LevelDBStorage struct { db *leveldb.DB } // NewLevelDBStorage 初始化LevelDB实例 func NewLevelDBStorage(path string) (*LevelDBStorage, error) { db, err := leveldb.OpenFile(path, nil) if err != nil { return nil, err } return &LevelDBStorage{db: db}, nil } // Put 存储键值对 func (s *LevelDBStorage) Put(key []byte, value []byte) error { return s.db.Put(key, value, nil) } // Get 获取键对应的值 func (s *LevelDBStorage) Get(key []byte) ([]byte, error) { return s.db.Get(key, nil) } // Delete 删除指定键 func (s *LevelDBStorage) Delete(key []byte) error { return s.db.Delete(key, nil) } // Scan 执行范围扫描 func (s *LevelDBStorage) Scan(prefix []byte) (keys [][]byte, values [][]byte, err error) { iter := s.db.NewIterator(nil, nil) defer iter.Release() for iter.Next() { if bytes.HasPrefix(iter.Key(), prefix) { keys = append(keys, iter.Key()) values = append(values, iter.Value()) } } if err := iter.Error(); err != nil { return nil, nil, err } return keys, values, nil } // Close 关闭数据库连接 func (s *LevelDBStorage) Close() { s.db.Close() }