bootjp / elastickv

Elastickv: An experimental project aimed at developing a distributed key-value store for cloud environments, similar to DynamoDB. Plans to feature Raft-based replication, dynamic node scaling, and automatic hot spot re-allocation.
GNU Affero General Public License v3.0
4 stars 2 forks source link

Elastickv

Overview

Elastickv is an experimental project undertaking the challenge of creating a distributed key-value store optimized for cloud environments, in a manner similar to DynamoDB. This project is currently in the planning and development phase, with the goal to incorporate advanced features like Raft-based data replication, dynamic node scaling, and automatic hot spot re-allocation. Elastickv aspires to be a next-generation cloud data storage solution, combining efficiency with scalability.

THIS PROJECT IS CURRENTLY UNDER DEVELOPMENT AND IS NOT READY FOR PRODUCTION USE.

Planned Features

Development Status

Elastickv is in the experimental and developmental phase, aspiring to bring to life features that resonate with industry standards like DynamoDB, tailored for cloud infrastructures. We welcome contributions, ideas, and feedback as we navigate through the intricacies of developing a scalable and efficient cloud-optimized distributed key-value store.

Example Usage

This section provides sample commands to demonstrate how to use the project. Make sure you have the necessary dependencies installed before running these commands.

Starting the Server

To start the server, use the following command:

go run cmd/server/demo.go

Starting the Client

To start the client, use this command:

go run cmd/client/client.go

Working with Redis

To start the Redis client:

redis-cli -p 63791

Setting and Getting Key-Value Pairs

To set a key-value pair and retrieve it:

set key value
get key
quit

Connecting to a Follower Node

To connect to a follower node:

redis-cli -p 63792
get key

Redirecting Set Operations to Leader Node

redis-cli -p 63792
set bbbb 1234
get bbbb
quit

redis-cli -p 63793
get bbbb
quit

redis-cli -p 63791
get bbbb
quit

Development

Setup pre-commit hooks

git config --local core.hooksPath .githooks