Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marceloboeira/bojack
🐴 The unreliable key-value store
https://github.com/marceloboeira/bojack
bojack cache crystal data-storage data-store database distributed nosql redis ruby storage store
Last synced: about 1 month ago
JSON representation
🐴 The unreliable key-value store
- Host: GitHub
- URL: https://github.com/marceloboeira/bojack
- Owner: marceloboeira
- License: mit
- Archived: true
- Created: 2016-07-10T04:04:44.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-30T23:26:46.000Z (almost 7 years ago)
- Last Synced: 2024-08-01T17:32:26.096Z (4 months ago)
- Topics: bojack, cache, crystal, data-storage, data-store, database, distributed, nosql, redis, ruby, storage, store
- Language: Crystal
- Homepage: http://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5
- Size: 413 KB
- Stars: 107
- Watchers: 8
- Forks: 13
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-crystal - bojack - A non-reliable in-memory key-value store (Caching)
- awesome-crystal - bojack - A non-reliable in-memory key-value store (Caching)
README
BoJack
The unreliable key-value store
## Status
Originally, from my article "[Why you should build your own NoSQL Database](http://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5)". 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](##contributing).
## 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
|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](https://github.com/hugoabonizio/bojack.cr) - Thanks to @hugoabonizio
- [Python](https://github.com/mauricioabreu/bojack-py) - Thanks to @mauricioabreu
- [Ruby](https://github.com/hugoabonizio/bojack.rb) - Thanks to @hugoabonizio
- [Elixir](https://github.com/veelenga/bojack.ex) - Thanks to @veelenga## Contributing
Found a bug? Have a suggestion? Please [open an issue](https://github.com/marceloboeira/bojack/issues/new).
Want to contribute? Take a look at our [open issues](https://github.com/marceloboeira/bojack/issues) and make sure you follow our [guide](CONTRIBUTING.md).
## License
Check the License [here](LICENSE).