diff options
Diffstat (limited to 'common/kv/interface.go')
-rw-r--r-- | common/kv/interface.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/common/kv/interface.go b/common/kv/interface.go new file mode 100644 index 00000000..5736a6a7 --- /dev/null +++ b/common/kv/interface.go @@ -0,0 +1,39 @@ +package kv + +import kvv1 "github.com/spiral/roadrunner/v2/proto/kv/v1beta" + +// Storage represents single abstract storage. +type Storage interface { + // Has checks if value exists. + Has(keys ...string) (map[string]bool, error) + + // Get loads value content into a byte slice. + Get(key string) ([]byte, error) + + // MGet loads content of multiple values + // Returns the map with existing keys and associated values + MGet(keys ...string) (map[string][]byte, error) + + // Set used to upload item to KV with TTL + // 0 value in TTL means no TTL + Set(items ...*kvv1.Item) error + + // MExpire sets the TTL for multiply keys + MExpire(items ...*kvv1.Item) error + + // TTL return the rest time to live for provided keys + // Not supported for the memcached + TTL(keys ...string) (map[string]string, error) + + // Clear clean the entire storage + Clear() error + + // Delete one or multiple keys. + Delete(keys ...string) error +} + +// Constructor provides storage based on the config +type Constructor interface { + // KVConstruct provides Storage based on the config key + KVConstruct(key string) (Storage, error) +} |