You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+58-1Lines changed: 58 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,8 +9,10 @@ Elastickv is an experimental project undertaking the challenge of creating a dis
9
9
-**Raft-based Data Replication**: KV state replication is implemented on Raft, with leader-based commit and follower forwarding paths.
10
10
-**Shard-aware Data Plane**: Static shard ranges across multiple Raft groups with shard routing/coordinator are implemented.
11
11
-**Durable Route Control Plane (Milestone 1)**: Durable route catalog, versioned route snapshot apply, watcher-based route refresh, and manual `ListRoutes`/`SplitRange` (same-group split) are implemented.
12
-
-**Protocol Adapters**: gRPC (`RawKV`/`TransactionalKV`), Redis (core commands + `MULTI/EXEC` and list operations), and DynamoDB-compatible API (`PutItem`/`GetItem`/`DeleteItem`/`UpdateItem`/`Query`/`Scan`/`BatchWriteItem`/`TransactWriteItems`) implementations are available (runtime exposure depends on the selected server entrypoint/configuration).
12
+
-**Protocol Adapters**: gRPC (`RawKV`/`TransactionalKV`), Redis-compatible server, DynamoDB-compatible HTTP API, and S3-compatible HTTP API implementations are available (runtime exposure depends on the selected server entrypoint/configuration).
13
+
-**Redis Compatibility Scope**: Strings, hashes, lists, sets, sorted sets, HyperLogLog, streams (`XADD`/`XREAD`/`XRANGE`/`XREVRANGE`/`XTRIM`/`XLEN`), Pub/Sub (`PUBLISH`/`SUBSCRIBE`), transactions (`MULTI`/`EXEC`/`DISCARD`), TTL/expiry (`EXPIRE`/`PEXPIRE`/`TTL`/`PTTL`), key scanning (`KEYS`/`SCAN`), and Lua scripting (`EVAL`/`EVALSHA`) are implemented. A Redis-protocol reverse proxy (`cmd/redis-proxy`) supports phased zero-downtime migration from existing Redis deployments.
13
14
-**DynamoDB Compatibility Scope**: `CreateTable`/`DeleteTable`/`DescribeTable`/`ListTables`/`PutItem`/`GetItem`/`DeleteItem`/`UpdateItem`/`Query`/`Scan`/`BatchWriteItem`/`TransactWriteItems` are implemented.
15
+
-**S3 Compatibility Scope**: `ListBuckets`, `CreateBucket`, `HeadBucket`, `DeleteBucket`, `PutObject`, `GetObject`, `HeadObject`, `DeleteObject`, and `ListObjectsV2` (path-style) are implemented. AWS Signature Version 4 authentication with static credentials is supported. The server exposes an S3-compatible HTTP endpoint via `--s3Address`.
14
16
-**Basic Consistency Behaviors**: Write-after-read checks, leader redirection/forwarding paths, and OCC conflict detection for transactional writes are covered by tests.
15
17
16
18
## Planned Features
@@ -29,6 +31,11 @@ Architecture diagrams are available in:
29
31
Deployment/runbook documents:
30
32
31
33
-`docs/docker_multinode_manual_run.md` (manual `docker run`, 4-5 node cluster on multiple VMs, no docker compose)
34
+
-`docs/redis-proxy-deployment.md` (Redis-protocol reverse proxy for zero-downtime Redis-to-Elastickv migration)
35
+
36
+
Design documents:
37
+
38
+
-`docs/s3_compatible_adapter_design.md` (S3-compatible object storage adapter design, data model, routing, and rollout plan)
#### Sorted Sets, Streams, and Other Data Structures
149
+
The Redis adapter supports the full range of Redis data structures including sorted sets (`ZADD`/`ZRANGE`/`ZSCORE`), HyperLogLog (`PFADD`/`PFCOUNT`), streams (`XADD`/`XREAD`/`XRANGE`), sets (`SADD`/`SMEMBERS`), hashes (`HGET`/`HSET`/`HGETALL`), and Pub/Sub (`PUBLISH`/`SUBSCRIBE`). Lua scripts can be executed via `EVAL` and `EVALSHA`.
150
+
151
+
#### Migrating from Redis
152
+
153
+
A Redis-protocol reverse proxy (`redis-proxy`) enables phased zero-downtime migration. It supports dual-write, shadow-read comparison, and primary cutover modes. See `docs/redis-proxy-deployment.md` for the full deployment guide.
154
+
155
+
```bash
156
+
# Run redis-proxy in dual-write mode (writes to both Redis and Elastickv)
157
+
# The proxy listens on :6479 inside the container, exposed as :6379 on the host
158
+
# so existing clients can connect without changing their configuration.
159
+
docker run --rm \
160
+
-p 6379:6479 \
161
+
ghcr.io/bootjp/elastickv/redis-proxy:latest \
162
+
-listen :6479 \
163
+
-primary redis.internal:6379 \
164
+
-secondary elastickv.internal:6380 \
165
+
-mode dual-write
166
+
```
167
+
168
+
### Working with S3-compatible Storage
169
+
170
+
Elastickv exposes an S3-compatible HTTP API on `--s3Address` (default `:9000`). Any S3 client or SDK that supports path-style requests and AWS Signature Version 4 can connect to it.
171
+
172
+
```bash
173
+
# Configure the AWS CLI to point at Elastickv
174
+
aws configure set aws_access_key_id YOUR_ACCESS_KEY
175
+
aws configure set aws_secret_access_key YOUR_SECRET_KEY
0 commit comments