• This repository has been archived on 02/Oct/2019
  • Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    Crystal
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐴 The unreliable key-value store

BoJack

The unreliable key-value store

Status

Originally, from my article "Why you should build your own NoSQL Database". BoJack is a bit mature now, yet missing several important features:

  • Cluster-friendliness
  • Security Layer (#34)
  • Unix Socket support (#48)

Feel free to share your thoughts and contribute.

Installation

Requirements

  • The latest version of Crystal (0.24.x)
  • LLVM development files

Steps

  1. Clone the repo: git clone https://github.com/marceloboeira/bojack
  2. Switch to repo-directory: cd bojack
  3. Build: make install (sudo for linux users)

Showtime

  1. Start the server, run: bojack server
  2. Connect a client, in another tab, run: bojack client
$ bojack console
> set food 🍣
🍣
> get food
🍣
> ping
pong

By default BoJack runs at 127.0.0.1:5000.

Usage

CLI

Currently the command-line interface supports two commands: server and console.

bojack <server/console> <flags>

Server

flag description
--hostname Hostname the server will run 127.0.0.1
--port Port the server will run 5000
--log Path for a log file STDOUT
--log-level Level of messages logged DEBUG = 0, INFO = 1 (default), WARN = 2, ERROR = 3, FATAL = 4

Console

flag description default
--hostname Hostname this console will connect 127.0.0.1
--port Port this console will connect 5000

Commands

List of available commands for BoJack

command description params example return
set sets a key with the given name and value key, value set foo bar the value of the key "bar"
increment increments the given key value by 1 key increment foo the value of the key "foo" incremented
get gets the value of the given value key get foo the value stored at the key, "bar"
delete deletes the given key key, * delete foo, delete * the value at the deleted key "bar" or every key in the database, if "*" is given instead of a key
append add one or more values to the end of a list key, value append list foo,bar the list resulted
pop retrieve the last item of the list key pop foo the last value stored at the list, "foo"
size return the number of stored items -- size the value of stored keys in memory
ping checks the server -- ping pong if everything is correct

Clients

Want to use BoJack with your language? Currently, we support:

  • Crystal - Thanks to @hugoabonizio
  • Python - Thanks to @mauricioabreu
  • Ruby - Thanks to @hugoabonizio
  • Elixir - Thanks to @veelenga

Contributing

Found a bug? Have a suggestion? Please open an issue.

Want to contribute? Take a look at our open issues and make sure you follow our guide.

License

Check the License here.

More Repositories

1

voik

β™’οΈŽ [WIP] An experimental ~distributed~ commit-log
Rust
256
star
2

awesome-expat

🌎 A curated list of resources for expats
90
star
3

sre

πŸ“š Index for my study topics
Makefile
61
star
4

awesome-osx

πŸ“¦ Awesome stuff for OSX
Crystal
57
star
5

logisim-7-segment-display-driver

➿ TTL-7447-like implementation for logisim
37
star
6

spotify.cr

🎧 A Crystal wrapper for the Spotify Web API
Crystal
35
star
7

rust-elm

Rust + Elm Web Application Template with Multistage Docker Build
Dockerfile
29
star
8

awsudo

> sudo-like behavior for role assumed access on AWS accounts
Rust
21
star
9

pdf.cr

πŸ“ PDF writer for Crystal
Crystal
20
star
10

BVGame

πŸ’› an unofficial BVG Stations Game
Elm
19
star
11

fish

🐟 A Sails bundle to easily deliver web apps! [UNMAINTENED AND DEPRECATED]
JavaScript
18
star
12

confirm-before

βœ… Are you sure? No? Confirm Before - Sanity check for your shell commands
Rust
16
star
13

satriani

🎸 A micro-framework for creating REST-like APIs in Crystal
Crystal
13
star
14

certifications

πŸ“’ My binder for certification studies
HCL
12
star
15

spread_blood

πŸ’‰ Winner of #HackInPoA 2015
Ruby
11
star
16

power-metal

PowerMetal Lyric Generator
Crystal
10
star
17

m3u8.cr

Generate and parse m3u8 playlists for HLS
Crystal
9
star
18

freak_tags

πŸ“Ί What have you been watching ?
Ruby
8
star
19

SobrinhoPHP

SobrinhoPHP, se vocΓͺ sabe sabe, caso contrΓ‘rio SobrinhoPHP.
CSS
8
star
20

ffmpeg.cr

πŸŽ₯ FFmpeg wrapper for Crystal
Crystal
7
star
21

crowd

πŸ‘₯ [WIP] An experimental High Available Reverse Proxy for Massive Asynchronous Message Consumption
Go
6
star
22

blew

πŸ“‘ A developers code-sharing tool
Ruby
6
star
23

srt.cr

Generate and Parse SRT files
Crystal
6
star
24

kurz-old

πŸš€ A blazing fast URL Shortener
Scala
6
star
25

option.cr

Ζ› Crystal implementation of Scala's Option Monad
Crystal
6
star
26

tmpdir.cr

🐡 Monkey Patch for tmp dir creation on Crystal standard library
Crystal
5
star
27

vhdl-examples

Unisinos class of Electronics Engineering
VHDL
5
star
28

coursera-machine-learning

My code for the programming exercises in the Stanford University Machine Learning class on Coursera.
MATLAB
5
star
29

terminal-notifier.cr

πŸ“’ Terminal Notifier binds for Crystal Lang
Crystal
5
star
30

CS8803

πŸŽ“ Georgia Tech - Introduction to Operating Systems
C
4
star
31

shortify

URL Shortener API assignment
Ruby
4
star
32

serial.cr

Serial port bindings for Crystal
Crystal
4
star
33

hffp

Ζ› My solutions for the Haskell From First Principles book
Haskell
4
star
34

spec2-nc.cr

πŸ“’ Spec2 tests with OSX notifications
Crystal
3
star
35

aws-lambda-datadog

A small library to facilitate sending metrics from an aws lambda function to datadog
JavaScript
3
star
36

satriani-example

This is a simple website built with Satriani.
Crystal
3
star
37

prezzo

πŸ’°Toolbox to create complex pricing models
Ruby
3
star
38

old-dot-files

My dot-files
Shell
3
star
39

trpl

πŸ”© My My notepad for The Rust Programming Language Book
Rust
3
star
40

terraform-provider-statuscake

[DEPRECATED] StatusCake Finally created a terraform provider, still not great! 🍰 A custom statuscake provider that points to API V1, providing support to new features.
Go
3
star
41

secret_advisor

πŸ‘€ An elegant and simple way to to send secret advices to co-workers without drawing too much attention, focused on small teams.
Ruby
3
star
42

eng-class-data-structures

C
2
star
43

numerical-methods

2014/2
MATLAB
2
star
44

blog

My Personal Blog with Jekyyl
CSS
2
star
45

kurz

[WIP] [RESEARCH] πŸš€ A URL Shortener so there are no URL Shorteners
Dockerfile
2
star
46

git.cr

:octocat: Git binary wrapper for Crystal [WIP]
Crystal
2
star
47

unisinos-microprocessors

C
2
star
48

electronic-circuits-1

M
2
star
49

stonks

πŸ“ˆ A stock display for Arduino
C++
2
star
50

bojack-kemal-heroku

Crystal
2
star
51

miller-urey

MillerUrey is a system to manage controlled environments
C
2
star
52

arnode

Arduino + Node (WARNING: POC, you should use johnny-five)
JavaScript
2
star
53

euler

Ζ› Project Euler solved in some different languages
C
2
star
54

deutschland

πŸ‡©πŸ‡ͺ
Makefile
2
star
55

dev

HTML
2
star
56

tmux-ruby-version

Just a simple tmux plugin to show the ruby version present on your environment
Shell
2
star
57

eng-class-alg

C
2
star
58

ruby-conference-tracks

Simple Tracks Manager for conferences
Ruby
1
star
59

mxcursos-git

RepositΓ³rios para os Alunos do Curso de Git e GitHub
1
star
60

marceloboeira.github.io

My Personal Website, made it with Jekyll.
CSS
1
star
61

marceloboeira

1
star
62

eng-class-sis-dig-01

1
star
63

cdkworkshop

TypeScript
1
star
64

e2e-provisioning

HCL
1
star
65

sixpack

A Docker Image with Sixpack ready to go.
1
star
66

dull

πŸ€ͺ a dummy multi-thread HTTP server
Rust
1
star