iii

KV Server

Key-Value storage server for persistent data storage

Key-Value storage server for persistent data storage with support for in-memory and file-based backends.

modules::kv_server::KvServer

Sample Configuration

- class: modules::kv_server::KvServer
  config:
    store_method: file_based
    file_path: ./data/kv_store
    save_interval_ms: 5000

Configuration

store_method
string

The storage method to use. Options are: - in_memory - Data is stored only in memory (lost on restart) - file_based

  • Data is stored in memory and periodically persisted to disk (survives restart)
file_path
string

The directory path where data files will be stored when using file_based storage method. Each index is stored as a separate file within this directory.

save_interval_ms
number

The interval in milliseconds between automatic saves when using file_based storage. Defaults to 5000.

Functions

kv_server.get
function

Get a value by key from the KV store.

kv_server.set
function

Set a value by key in the KV store.

kv_server.delete
function

Delete a value by key from the KV store.

kv_server.list_keys_with_prefix
function

List all keys that match a given prefix.

kv_server.list
function

List all values that match a given key pattern.

Usage Examples

Basic Key-Value Operations

import { bridge } from 'iii'

// Set a value
await bridge.invoke('kv_server.set', {
  index: 'default',
  key: 'user:123',
  value: { name: 'John', email: 'john@example.com' },
})

// Get a value
const user = await bridge.invoke('kv_server.get', {
  index: 'default',
  key: 'user:123',
})
console.log(user) // { name: 'John', email: 'john@example.com' }

// Delete a value
await bridge.invoke('kv_server.delete', {
  index: 'default',
  key: 'user:123',
})

Listing Keys with Prefix

// Store some users
await bridge.invoke('kv_server.set', { index: 'default', key: 'user:1', value: { name: 'Alice' } })
await bridge.invoke('kv_server.set', { index: 'default', key: 'user:2', value: { name: 'Bob' } })
await bridge.invoke('kv_server.set', { index: 'default', key: 'product:1', value: { name: 'Widget' } })

// List all user keys
const userKeys = await bridge.invoke('kv_server.list_keys_with_prefix', {
  prefix: 'user:',
})
console.log(userKeys) // ['user:1', 'user:2']

On this page