MCPcopy Index your code
hub / github.com/bloq/memds

github.com/bloq/memds @v0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
127 symbols 360 edges 20 files 0 documented · 0% updated 2y ago★ 60
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

memds

Memory database - "redis v3, in Rust"

Goals and Journey

memds intends to be "the next thing after redis"

Looking through software history, we can consider memcached as Version 1: memcached provides a single key/value namespace for string values, plus some small mods for atomic numbers. redis is Version 2: Differences between abstract data types (ADTs) are made explicit with strings, sets, lists, hash [tables], streams and more.

memds is Version 3: Formally model the network protocol and database namespace. Represent abstract data types as CLASS.METHOD internal Remote Procedure Calls (RPCs), batched together as a bytecode-like stream of database mutation operations.

Model & design comparisons

(note: the current code is still a work in progress, in terms of implementing this)

Old redis model:

     [database number] [key] [abstract data type]

New memds model:

     [database key] [key] [abstract data type, possibly with its own hierarchy]

Old redis protocol hierarchy: All ADTs overloaded in a single command namespace ("HLEN","LLEN"). New memds protocol hierarchy: Each ADT in its own class-specific namespace. (like "HASH.LEN","LIST.LEN", but with integer identifiers).

Old redis network protocol: Custom protocol, requiring custom clients across N programming languages. New memds network protocol: Protobuf schema, automatically generating correct, compliant, fast client codecs for many languages.

Components

  • memds-cli: Command line client
  • memds-proto: wire protocol library
  • memds-server: Database server

Installation

All building is done via the standard Rust tool Cargo.

$ cargo build --release
$ cargo test --release

Core symbols most depended-on inside this repo

result_err
called by 53
memds-proto/src/util.rs
rpc_exec
called by 24
memds-cli/src/util.rs
get_test_db
called by 8
memds-server/src/string.rs
get_test_db
called by 8
memds-server/src/set.rs
get
called by 7
memds-server/src/string.rs
add_del
called by 6
memds-server/src/set.rs
cmpstore
called by 6
memds-cli/src/set.rs
encode
called by 6
memds-proto/src/codec.rs

Shape

Function 111
Method 7
Class 6
Enum 3

Languages

Rust100%

Modules by API surface

memds-cli/src/set.rs18 symbols
memds-server/src/string.rs15 symbols
memds-cli/src/string.rs12 symbols
memds-server/src/set.rs11 symbols
memds-server/src/keys.rs10 symbols
memds-cli/src/list.rs10 symbols
memds-proto/src/codec.rs9 symbols
memds-cli/src/keys.rs9 symbols
memds-server/src/server.rs6 symbols
memds-server/src/list.rs6 symbols
memds-cli/src/server.rs6 symbols
memds-server/src/config.rs5 symbols

For agents

$ claude mcp add memds \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact