Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wuriyanto48/kece

[In Development] An Experimental distributed Key Value Store written in pure Go
https://github.com/wuriyanto48/kece

cache caching go golang inmemory inmemory-db kece keyvalue keyvaluestore

Last synced: about 1 month ago
JSON representation

[In Development] An Experimental distributed Key Value Store written in pure Go

Awesome Lists containing this project

README

        

[](https://github.com/wuriyanto48/kece)



[![Build Status](https://travis-ci.org/wuriyanto48/kece.svg?branch=master)](https://travis-ci.org/wuriyanto48/kece)

### What is kece?
An Experimental distributed Key Value Store written in Go

### TODO
- Add Pub Sub feature
- Protocol ? :D
- Support multiple datatype to store (now `Kece` only support simple string)

### Usage
- Build binary from source
```shell
$ git clone https://github.com/wuriyanto48/kece.git

$ make build

$ kece --version
```

- Run `kece` server

if `port flag` is not present, `kece` will using `9000` as the default port
```shell
$ kece -port 8000
)
( /( ( (
)\()) ))\ ( ))\
((_)\ /((_) )\ /((_)
| |(_)(_)) ((_)(_))
| / / / -_)/ _| / -_)
|_\_\ \___|\__| \___|

log -> kece server listen on port : 8000
```

- There are two type of data structure for store data, `HashMap` and `Binary Tree` (default using `HashMap`). For choose data structure type, add flag `-ds`.
```shell
$ kece -port 8000 -ds bt
$ kece -port 8000 -ds hashmap
```

- Store simple data

you can use either `nc` or `telnet` as client
```shell
$ nc localhost 8000
$
$ SET 1 wuriyanto
$ +OK
$
$ SET *BJE* hello
$ +OK
$
$ GET 1
$ wurianto
$
$ GET *BJE*
$ hello
$
$ DEL 1
$ +OK
$
$ SET cache "this is cache value with lifetime 20 seconds" 20
$ +OK
```

- Auth mechanism

if you want to use `Auth` on your `kece server`, simply add `-auth your-server-password` when start your server
```shell
$ kece -port 8000 -auth my-secret
)
( /( ( (
)\()) ))\ ( ))\
((_)\ /((_) )\ /((_)
| |(_)(_)) ((_)(_))
| / / / -_)/ _| / -_)
|_\_\ \___|\__| \___|

log -> kece server listen on port : 8000
```

send auth to server
```shell
$ AUTH my-secret
$ +OK
$
```

- Access KECE from code

follow this repository https://github.com/Bhinneka/kece-client-examples to see example how to access `kece` from specific language

#

### Author
Wuriyanto https://github.com/wuriyanto48

### Contibutions PR
Before creating PR make sure your PR is passed.
Use the linter first, then commit and push

```
$ make lint-prepare

$ make lint

$ make test
```