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 year ago
JSON representation
[In Development] An Experimental distributed Key Value Store written in pure Go
- Host: GitHub
- URL: https://github.com/wuriyanto48/kece
- Owner: wuriyanto48
- License: other
- Created: 2019-01-28T08:57:58.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-12-26T11:36:10.000Z (over 5 years ago)
- Last Synced: 2025-03-29T09:51:17.997Z (about 1 year ago)
- Topics: cache, caching, go, golang, inmemory, inmemory-db, kece, keyvalue, keyvaluestore
- Language: Go
- Homepage:
- Size: 105 KB
- Stars: 9
- Watchers: 6
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[
](https://github.com/wuriyanto48/kece)
[](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
```