store
A keyvalue interface that provides eventually consistent key-value operations. Each of these operations acts on a single key-value pair. The value in the key-value pair is defined as a `u8` byte array and the intention is that it is the common denominator for all data types defined by different key-value stores to handle data, ensuring compatibility between different key-value stores. Note: the clients will be expecting serialization/deserialization overhead to be handled by the key-value store. The value could be a serialized object from JSON, HTML or vendor-specific data types like AWS S3 objects. Data consistency in a key value store refers to the guarantee that once a write operation completes, all subsequent read operations will return the value that was written. Any implementation of this interface must have enough consistency to guarantee "reading your writes." In particular, this means that the client should never get a value that is older than the one it wrote, but it MAY get a newer value if one was written around the same time. These guarantees only apply to the same client (which will likely be provided by the host or an external capability of some kind). In this context a "client" is referring to the caller or guest that is consuming this interface. Once a write request is committed by a specific client, all subsequent read requests by the same client will reflect that write or any subsequent writes. Another client running in a different context may or may not immediately see the result due to the replication lag. Unlike `wasi:keyvalue@0.2.0-draft`, every operation that touches a backend is an `async func`. This lets a single component issue many in-flight key-value operations concurrently without the `wasi:io/poll` ceremony required under wasip2.