Memory database - "redis v3, in Rust"
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.
(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.
memds-cli: Command line clientmemds-proto: wire protocol librarymemds-server: Database serverAll building is done via the standard Rust tool Cargo.
$ cargo build --release
$ cargo test --release
$ claude mcp add memds \
-- python -m otcore.mcp_server <graph>