cbd/edis
50.9
Adequate · 23 September 2026
5.3k
lines of production code
Erlang
primary language
5
measurements over time
What this system is
Edis is an Erlang-based, Redis-compatible database server that manages client connections and routes commands to pluggable storage backends. It supports multiple persistence options, including LevelDB, HanoiDB, and an in-memory Process Dictionary, allowing for flexible data storage strategies. The system includes comprehensive testing and benchmarking utilities to verify command correctness and measure performance across various data types.
Features
Added new backend implementations for LevelDB, HanoiDB, and Process Dictionary
Users can now choose from three distinct storage backends for the edis system. The new edis\_eleveldb\_backend provides a persistent, high-performance option backed by LevelDB. The edis\_hanoidb\_backend offers an alternative persistent store using HanoiDB. For testing or development purposes, the edis\_pd\_backend utilizes Erlang's Process Dictionary, which is explicitly warned against for production use. All three backends implement the edis\_backend behaviour, allowing for interchangeable storage strategies.
src/backends · high confidence
Added service installation and configuration for Edis
Users can now install Edis as a service, with a new init.d script enabling start, stop, restart, and status management. A new edis.config file provides default settings such as the listener port, database directory, client timeout, and backend configuration. Additionally, a script\_builder script automates the creation of a self-contained executable in the bin directory.
priv · high confidence
Initial project structure and configuration for Edis
The repository is initialized with the core build system (Makefile, Emakefile, rebar.config) and configuration files for various database backends (HanoiDB, LevelDB, PD) and logging (Lager). This includes the Apache 2.0 license, a .gitignore file, and README documentation, establishing the foundation for the Edis Redis-compatible database.
(repo-wide) · high confidence
Initial release of the edis Erlang-based Redis-compatible server
The edis application is introduced, providing a Redis-compatible server implementation in Erlang. This release establishes the core architecture, including the main application module (edis.erl), a TCP listener for client connections (edis\_listener), and a client state machine (edis\_client) that parses and routes commands. The system supports pluggable database backends via the edis\_backend behavior, with a default implementation using the Erlang LevelDB wrapper (edis\_db). The release also includes configuration management (edis\_config), a command runner (edis\_command\_runner) for handling Redis protocol commands, and a database monitor (edis\_db\_monitor) for tracking operations.
src · high confidence
New header files for SORT, Pub/Sub, and benchmarking
Added include/edis.hrl and include/edis\_bench.hrl to support new data structures and benchmarking capabilities. edis.hrl introduces records for SORT options (including limit, get, direction, type, and store\_in), Pub/Sub messaging (edis\_message), and command execution (edis\_command), alongside a generic edis\_item record with vclock and timestamp fields. edis\_bench.hrl defines symbol mappings for benchmark visualization.
include · high confidence
Test coverage
Added benchmarking suite for Redis commands; Expanded test coverage for Redis commands and added benchmarking tool.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 44 → 51 (+7.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 83 (-9.7)
- Architecture 100 → 100 (+0.0)
- Maturity 25 → 36 (+11.1)
- Readiness 24 → 37 (+12.4)
- Security 100 → 100 (+0.0)
Resolved (9)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- The Usage section states 'run $ make run' but does not show how to connect via a client, leaving the reader guessing what it builds. (README.md)
- TooManyMethods: edis_command_runner (src/edis_command_runner.erl)
- TooManyMethods: edis_db (src/edis_db.erl)
- complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (55)
- Coverage not measured — no coverage collector is wired up
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (src/edis_command_runner.erl)
- Duplicated block (10 lines × 2) (src/edis_db.erl)
- Duplicated block (11 lines × 2) (src/edis_db.erl)
- Duplicated block (12 lines × 2) (src/edis_db.erl)
- Duplicated block (14 lines × 2) (src/edis_db.erl)
- Duplicated block (14 lines × 4) (src/edis_db.erl)
- Duplicated block (16 lines × 3) (src/edis_db.erl)
- Duplicated block (24–25 lines × 2) (src/edis_db.erl)
- Duplicated block (25 lines × 2) (src/edis_db.erl)
- Duplicated block (5 lines × 2) (src/edis_command_runner.erl)
- Duplicated block (5 lines × 2) (src/edis_command_runner.erl)
- Duplicated block (5 lines × 2) (src/edis_command_runner.erl)
- Duplicated block (5 lines × 2) (src/edis_db.erl)
- Duplicated block (5 lines × 2) (src/edis_db.erl)
- Duplicated block (5 lines × 2) (src/edis_db.erl)
- Duplicated block (5 lines × 3) (src/edis_db.erl)
- Duplicated block (5 lines × 3) (src/edis_db.erl)
- …and 35 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
cbd/edis was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit aad89352f25a7f3737242ddc9bc913def75a517a — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.