A lightweight Redis implementation written in Go, serves as presonal learning project, tested using codecrafters.
- Pure Go implementation
- Сompatible with redis-server/redis-cli
- Redis protocol support
- Key-value operations
- Streams support
- Transactions support
- Replication capabilities
- RDB persistence support
clone this repository
git clone https://github.com/4c656f/redis-goinstall golang >= 1.22
start server
./your_program.shto execute commands via redis-cli run redis-server on custom port
redis-server --port 3780execute command
redis-cli ping| Category | Command | Arguments |
|---|---|---|
| Connection | PING | [message] |
| PONG | [message] | |
| ECHO | message | |
| Key-Value | SET | key value [EX seconds] [PX milliseconds] [NX|XX] |
| GET | key | |
| KEYS | pattern | |
| TYPE | key | |
| INCR | key | |
| Server | INFO | [all/replication] |
| CONFIG | GET dir/dbfilename | |
| Replication | REPLCONF | listening-port / GETACK ackType / ACK offset / capa psynch2 |
| PSYNC | replicationid offset | |
| FULLRESYNC | replicationid offset | |
| WAIT | numreplicas timeout | |
| Streams | XADD | key [NOMKSTREAM] [<MAXLEN / MINID> [= / ~] threshold [LIMIT count]] <* / id> field value [field value ...] |
| XRANGE | key start end [COUNT count] | |
| XREAD | [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] | |
| Transactions | MULTI | (no arguments) |
| EXEC | (no arguments) | |
| DISCARD | (no arguments) | |
| Generic | OK | (no arguments) |
| ERROR | (no arguments) |
I will be glad to receive any of your questions/suggestions/contributions to this project! contact me via: