Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 32 additions & 15 deletions REDIS_COMPATIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,18 +176,35 @@ Redis modules extend Redis functionality with custom data types and commands. Ze
| TS.DELETERULE | No | Delete a downsampling rule |
| TS.ALTER | Yes | Alter the configuration of a time series |

### Popular Redis Modules

| Module | Supported | Notes |
| --------------- | --------- | --------------------------------------------------- |
| RedisJSON | No | JSON data type and operations |
| RediSearch | No | Full-text search and indexing |
| RedisGraph | No | Graph database functionality |
| RedisTimeSeries | No | Time series data structures |
| RedisBloom | No | Probabilistic data structures (Bloom filters, etc.) |
| RedisGears | No | Programmable data processing engine |

### Module System
## RediSearch (FT)

Search indexes are self-contained (documents stored inside the index via the
legacy `FT.ADD` API). Vectors use the `FLAT` (exact KNN) algorithm with
`L2`, `IP`, and `COSINE` distance metrics. Indexes are rebuilt from AOF on boot.

| Command | Supported | Notes |
| ------------ | --------- | --------------------------------------------------------------------------------------- |
| FT.CREATE | Yes | Schema with TEXT, NUMERIC, TAG, and VECTOR (FLAT) fields |
| FT.DROPINDEX | Yes | Delete an index |
| FT._LIST | Yes | List all search indexes |
| FT.INFO | Yes | Index schema and document count |
| FT.ADD | Yes | Add a document (supports REPLACE) |
| FT.DEL | Yes | Delete a document |
| FT.GET | Yes | Fetch a document's fields |
| FT.SEARCH | Yes | Text/numeric/tag filters, BM25 scoring, SORTBY, LIMIT, RETURN, PARAMS, and `=>[KNN]` |

## Popular Redis Modules

| Module | Supported | Notes |
| --------------- | --------- | ------------------------------------------------------------------ |
| RedisJSON | No | JSON data type and operations |
| RediSearch | Partial | FT commands implemented natively (see RediSearch (FT) section) |
| RedisGraph | No | Graph database functionality |
| RedisTimeSeries | Partial | Time series data structures (see Time Series section) |
| RedisBloom | Partial | Probabilistic data structures (see Bloom Filter commands) |
| RedisGears | No | Programmable data processing engine |

## Module System

| Feature | Supported | Notes |
| ----------------- | --------- | -------------------------------- |
Expand All @@ -198,11 +215,11 @@ Redis modules extend Redis functionality with custom data types and commands. Ze

## Summary

**Total Commands**: 77
- **Fully Implemented**: 28 commands
**Total Commands**: 85
- **Fully Implemented**: 36 commands
- **Partially Implemented**: 0 commands
- **Not Implemented**: 49 commands

**Implementation Coverage**: ~36%
**Implementation Coverage**: ~42%

This compatibility matrix will be updated as new commands are implemented in Zedis.
4 changes: 2 additions & 2 deletions src/aof/aof.zig
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ pub const Reader = struct {

const testing = std.testing;
test "aof reading test" {
const reg_init = @import("../commands/init.zig");
const reg_init = @import("../commands/init_registry.zig");

// Read a command and test that the value is stored as expected
const test_file_data = "*3\r\n$3\r\nset\r\n$1\r\nt\r\n$4\r\ntest\r\n";
Expand Down Expand Up @@ -169,7 +169,7 @@ test "aof reading test" {
try testing.expect(std.mem.eql(u8, store.get("t").?.value.short_string.asSlice(), "test"));
}
test "aof writing test" {
const reg_init = @import("../commands/init.zig");
const reg_init = @import("../commands/init_registry.zig");

// Execute a command and test that it writes it correctly
const test_file_name = "aof_writing_test.aof";
Expand Down
2 changes: 1 addition & 1 deletion src/benchmarks/bench_commands.zig
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const std = @import("std");
const Store = @import("../store.zig").Store;
const CommandRegistry = @import("../commands/registry.zig").CommandRegistry;
const initRegistry = @import("../commands/init.zig").initRegistry;
const initRegistry = @import("../commands/init_registry.zig").initRegistry;
const Parser = @import("../parser.zig");
const Value = Parser.Value;
const bench_runner = @import("bench_runner.zig");
Expand Down
Loading
Loading