DiceDB / dice
- вторник, 16 июля 2024 г. в 00:00:02
A drop-in replacement of Redis with SQL-based realtime reactivity.
Dice 🎲 is a drop-in replacement of Redis with SQL-based realtime reactivity baked in.
Note: DiceDB is still in development and it supports a subset of Redis commands. So, please do not use it in production. But, feel free to go through the open issues and contribute to help us speed up the development.
QWATCH
that lets clients listen to a SQL query and get notified in real-time whenever something changes.The easiest way to get started with DiceDB is using Docker by running the following command.
$ docker run dicedb/dice-server
To run DiceDB for local development or running from source, you will need
$ git clone https://github.com/dicedb/dice
$ cd dice
$ go run main.go
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.
But if you are planning to use QWATCH
feature then you need to use the DiceDB CLI that you can download from PyPI by running the following command. The codebase for the same can be found at dicedb/cli.
$ pip install dicedb-cli
Unit tests and integration tests are essential for ensuring correctness and in the case of DiceDB, both types of tests are available to validate its functionality.
For unit testing, you can execute individual unit tests by specifying the name of the test function using the TEST_FUNC
environment variable and running the make unittest-one
command. Alternatively, running make unittest
will execute all unit tests.
$ TEST_FUNC=<name of the test function> make unittest-one
$ TEST_FUNC=TestByteList make unittest-one
$ make unittest
Integration tests, on the other hand, involve starting up the DiceDB server and running a series of commands to verify the expected end state and output. To execute a single integration test, you can set the TEST_FUNC
environment variable to the name of the test function and run make test-one
. Running make test
will execute all integration tests.
$ TEST_FUNC=<name of the test function> make test-one
$ TEST_FUNC=TestSet make test-one
$ make test
Work to add more tests in DiceDB is in progress and we will soon port the test Redis suite to this codebase to ensure full compatability.
$ go test -test.bench <pattern>
$ go test -test.bench BenchmarkListRedis
To get started with building and contributing to DiceDB, please refer to the issues created in this repository.
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.
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.
$ sudo netstat -atlpn | grep :7379
$ sudo kill -9 <process_id>