Skip to content

arstercz/jack

 
 

Repository files navigation

Jack

Build Status GoDoc

screenshot

What is Jack?

Jack is a proof-of-concept concurrent key-value server. It supports get, set, publish, subscribe, and delete

The underlying data structure is MetaStore, which is an abstraction over a string map that divides the key-space into buckets for finer lock resolution.

Installation

You can use the Go tool to install the library and dependencies:

export GOPATH=<where you store your Go code>
go get -u github.com/tristanwietsma/jack

The project currently ships with the server, jackd, and a command line interface, jack-cli. Since the Go tool doesn't like multiple build targets in the same project, you need to build them separately:

cd $GOPATH/src/github.com/tristanwietsma/jack
make

The 'make' will build both jackd and jack-cli, as well as move them to $GOCODE/bin.

Usage

To start the server, run jackd:

$ jackd
2013/10/02 15:26:25 created storage with 1000 buckets
2013/10/02 15:26:25 server started on port 2000
...

To start the command-line tool:

jack > help
  GET key [key ...]
  SET key value
  DEL key [key ...]
  PUB key value
  SUB key [key ...]
  QUIT

$ jack-cli
jack> set key123 val567
jack> 1
jack> get key123
jack> key123 := val567
jack> pub key123 765lav
jack> 1
jack> sub key123
...

The commands are all three characters and not case sensitive. The following should be self-explanatory:

jack> set <key> <value>

jack> get <key> [<key> ...] // supports multiple keys

jack> pub <key> <value>

jack> del <key> [<key> ...] // supports multiple keys

jack> sub <key> [<key> ...] // supports multiple keys

About

Concurrent key-value server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 98.7%
  • Makefile 1.3%