Kvdb
KVDB
Install / Use
/learn @bluesky-social/KvdbREADME
KVDB
NOTE: This repository is under heavy development and is not suitable for general production use yet. Do not use!
An implementation of a subset of the redis command set backed persistently by FoundationDB.
Note that the name KVDB is temporary.
Local Development
Ensure you have go, just, and the foundation clients installed (you must use fdb version 7.3.63).
Then, run just install-tools once to ensure you have the local go tooling you need.
You may then stand up and tear down the local dev dependencies with:
# runs local dependencies in docker
just up
# cleans up when you're done developing
just down
You can then run any of the following:
# show all supported commands
just --list
# run the linter and all tests
just
# run the database (you can also launch it in the debugger in vs code)
just run kvdb run
# open a local shell to the fdb database
just fdbcli
For instance, in one shell, you could run just run kvdb run, then in another, you could do:
redis-cli
127.0.0.1:6379> auth admin admin
OK
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> ACL SETUSER newusername on >password123
OK
Keyspace Layout
FoundationDB provides strictly serializable transactions atop an ordered key-value store. The design of our key directory layout for redis is the following:
|Path|Description|
|-|-|
|redis_v0/*|All data related to the redis implementation atop foundationdb (if we implement other wire protocols in the future, we will also give them their own directory)|
|redis_v0/_admin_user_initialized|Whether or not an admin user has been created on the cluster via the CLI and env vars|
|redis_v0/_user/<username>|The directory of user protobuf objects, stored by username|
|redis_v0/<user_id>/*|Data for an individual redis user|
|redis_v0/<user_id>/meta/<obj_id>|Metadata protobuf object for bookkeeping of stored object blobs|
|redis_v0/<user_id>/obj/<obj_id>|Storage of data objects|
|redis_v0/<user_id>/list/<list_id>|Metadata protobuf for information on each list|
|redis_v0/<user_id>/list/<list_id>/<item_id>|Metadata protobuf for information on each item in a list|
|redis_v0/<user_id>/zset/<set_id>|Stores an ordered list of item scores for ordered sets|
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
