Skip to main content

Cloudflare KV

Cloudflare KV provides a global, low-latency key-value storage solution accessible through the Cloudflare API.

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://auth_email:auth_key@account_id/namespace');

Basic Operations

List all objects

You can list all objects in the namespace:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$iterator = $kv->getIterator();
print_r($iterator->toArray());

You can add a prefix to filter results and a limit to control the number of items returned:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$iterator = $kv->getIterator([
"prefix" => "prefix_to_match",
"limit" => 30
]);
print_r($iterator->toArray());

// To get the next page if it exists:
$iterator = $kv->getIterator($kv->getLastCursor());
print_r($iterator->toArray());
Pagination

Use getLastCursor() to retrieve the cursor for the next page of results when working with large datasets.

Check if a key exists

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
if ($kv->has("object_name")) {
// The key exists
}

Inserting/Updating data

Put a single value:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$kv->put("object_name", "value");

Put multiple values in batch:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$bulk = [
new \ByJG\AnyDataset\NoSql\KeyValueDocument("key1", "value1"),
new \ByJG\AnyDataset\NoSql\KeyValueDocument("key2", "value2"),
];
$kv->putBatch($bulk);

Retrieve a value

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$value = $kv->get("object_name");

Get a portion of a value

For large objects, you can retrieve just a portion:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
// Get 1024 bytes starting from offset 0
$chunk = $kv->getChunk("object_name", [], 1024, 0);

Remove a value

Remove a single key:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$kv->remove("object_name");

Remove multiple keys at once:

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$kv->removeBatch(["key1", "key2"]);

Rename a key

<?php
$kv = \ByJG\AnyDataset\NoSql\Factory::getInstance('kv://....');
$kv->rename("old_key_name", "new_key_name");

Open source ByJG