github.com/geniusesgroup/libgo@v0.0.0-20220713101832-828057a9d3d4/protocol/storage-key-value.go (about) 1 /* For license and copyright information please see LEGAL file in repository */ 2 3 package protocol 4 5 // StorageKeyValue is the interface that show how an key-value directory work. 6 // If need encryption, Implement requirements at block storage level. 7 // https://github.com/cockroachdb/pebble/blob/master/open.go 8 type StorageKeyValue interface { 9 KeyNumbers() (num uint64, err Error) 10 ListKeys(offset, limit uint64) (keys [][]byte, err Error) 11 12 Lock(key []byte) (value []byte, err Error) 13 Unlock(key []byte, value []byte) (err Error) 14 15 Length(key []byte) (ln int, err Error) 16 Get(key []byte) (value []byte, err Error) 17 Set(key []byte, value []byte, options StorageKeyValue_SaveOptions) (err Error) 18 19 // make invisible just by remove from primary index 20 Delete(key []byte) (err Error) 21 // make invisible by remove from primary index & write zero data to value location 22 Erase(key []byte) (err Error) 23 24 // Multiple changes can be made in one atomic batch 25 // Batch() 26 } 27 28 type StorageKeyValue_SaveOptions struct { 29 // TTL(Time-To-Live) or Expiration Number of nanoseconds until record expires. 30 TTL Duration 31 }