Introduction
DiceDB is a fork of Valkey (the Redis successor) that adds reactive query subscriptions to the key-value model. Clients can subscribe to query results and receive automatic push notifications when the underlying data changes, eliminating the need for polling.
What DiceDB Does
- Provides a Redis-compatible in-memory key-value store with sub-millisecond latency
- Supports query subscriptions that push updates when watched data changes
- Implements multi-threaded I/O for higher throughput than single-threaded Redis
- Offers hierarchical storage tiers for managing hot and cold data
- Maintains wire-protocol compatibility with Redis and Valkey clients
Architecture Overview
DiceDB is written in C and extends the Valkey codebase with a reactive subscription engine. The query subscription system tracks which keys affect each registered query and triggers re-evaluation when those keys are modified. A multi-threaded I/O layer distributes client connections across CPU cores for improved concurrency compared to the traditional single-threaded Redis event loop.
Self-Hosting & Configuration
- Deploy with Docker using the official DiceDB image on port 7379
- Build from source on Linux or macOS with standard C build tools
- Configure memory limits, persistence, and eviction policies via a config file
- Connect using any Redis-compatible client library in any language
- Monitor performance with built-in INFO and SLOWLOG commands
Key Features
- Reactive subscriptions push real-time updates to clients without polling
- Redis wire-protocol compatibility means existing tools and libraries work unchanged
- Multi-threaded architecture for better utilization of modern multi-core hardware
- Tiered storage moves cold data to disk while keeping hot data in memory
- Low operational overhead with a single binary and minimal configuration
Comparison with Similar Tools
- Redis / Valkey — The baseline key-value store; DiceDB adds reactive subscriptions and multi-threaded I/O on top
- DragonflyDB — Multi-threaded Redis alternative focused on raw throughput, but no query subscription feature
- KeyDB — Multi-threaded Redis fork with active replication, but not actively maintained
- Garnet — Microsoft Research cache store in C#, optimized for .NET workloads
- Apache Ignite — Distributed in-memory computing platform, much heavier operational footprint
FAQ
Q: Is DiceDB compatible with existing Redis clients? A: Yes. DiceDB uses the Redis wire protocol, so existing client libraries (redis-py, ioredis, Jedis, etc.) work without changes.
Q: What are query subscriptions? A: Query subscriptions let a client register a query (like GET or filtered key patterns) and receive automatic notifications when the result changes, similar to database triggers but at the client level.
Q: How does DiceDB compare to Redis in performance? A: DiceDB aims for comparable or better throughput than Redis for standard operations, with the multi-threaded I/O layer providing an advantage on multi-core systems.
Q: What is the license? A: DiceDB is licensed under BSD 3-Clause, the same as the original Valkey/Redis license.