Skip to content

ravlio/iqdb

Repository files navigation

iqdb

POC, not for production, made just for showing my code style, nothing more

Documentation: https://godoc.org/github.com/ravlio/iqdb

IqDB is:

  • Fast
  • Multi-protocol in-memory database
  • Supports k/v, hashes, lists
  • Sync/async binary AOF-persistence
  • TTL on BTree
  • Supports Redis text protocol on TCP
  • Can be used in embedded mode

TODO:

  • Raw TCP client/server with multiplexing
  • HTTP client/server
  • Replication

Binary protocol

Protocol is stupid simple. First byte is operation. For string format is int64 size header and then comes byte sequence. For list is additional item count.

for string:

[byte Operation][int64 len][[]byte string]

for list:

[byte Operation][int64 list len][int64 item len][[]byte string]

example SET operation (operation, key with length, ttl (int64), value with length)

[1][7][testkey][10][9][testvalue]

error handling and empty answers are operations too.

Docker run on redis protocol

docker run --rm -d -p 7379:7379 ravlio/iqdb:0.1.0

then you can connect via redis-cli -p 7379

Please use only capital letters for commands. E.g. SET a 1 is allowed, set a 1 is not allowed.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages