Dice
Dice 🎲 is an extremely simple Golang-based in-memory KV store that speaks the Redis dialect.
Why should you care?
Building a database from scratch has its own thrill, and you can leverage this to
- build a database from scratch
- learn database internals, starting with Redis
- learn about advanced data structures, algorithms, and event loops
- collaborate with other engineers and contribute back to Open Source
Tenet
- remain product-first
- remain the easiest to work with
Highlights
- [planned] Semi-persistent Storage
- [planned] Efficient concurrency using Goroutines
Setting up
To run DiceDB locally, you will need
- Golang
- Any of the below supported platform environment:
- Linux based environment
- OSX (Darwin) based environment
$ git clone https://github.com/dicedb/dice
$ cd dice
$ go run main.go
Dice in action
Because Dice speaks Redis' dialect, you can connect to it with any Redis Client and the simplest way it to use a Redis CLI. Programmatically, depending on the language you prefer, you can use your favourite Redis library to connect.
Running Tests
To run all the unit tests fire the following command
$ go test ./...
Running a single test
$ go test -timeout 30s -run <pattern> <package path>
$ go test -timeout 30s -run ^TestByteList$ ./...
Running Benchmark
$ go test -test.bench <pattern>
$ go test -test.bench BenchmarkListRedis
Getting Started
To get started with building and contributing to DiceDB, please refer to the issues created in this repository.
The story
DiceDB started as a re-implementation of Redis in Golang and the idea was to - build a DB from scratch and understand the micro-nuances that comes with its implementation. The database does not aim to replace Redis, instead it will fit in and optimize itself for multi-core computations running on a single-threaded event loop.
How to contribute
The Code Contribution Guidelines are published at CONTRIBUTING.md; please read them before you start making any changes. This would allow us to have a consistent standard of coding practices and developer experience.
Contributors can join the Discord Server for quick collaboration.
Contributors
Story
Arpit Bhayani started building Dice DB to understand Redis better and
compiled his learning in a course Redis Internals that
laid the foundation of Dice DB.
License
DiceDB is open-sourced under Apache License, Version 2.0.