2 releases
0.1.0-alpha.2 | Oct 10, 2019 |
---|
#1570 in Database interfaces
300KB
9K
SLoC
reredis
reredis is a reimplementation of Redis (server) in Rust programming language. The current equivalent version of Redis is 1.x - 2.x. It supports Linux and MacOS(it depends on Unix API like fork, so Windows version is not available now).
Licensed under BSD 3-Clause.
Building reredis
reredis can be compiled on all *nix systems that supports Rust toolchain(but tested only on Linux and MacOS).
It requires Rust(>= 1.37.0) to compile. To install Rust, see this.
The build command is
%cargo build --release
and the executable is located at ./target/release/reredis
After building Redis, it is a good idea to test it using:
%cargo test # This is unit tests
and
%cargo test --test server_test -- --ignored --nocapture # This is integration tests
Alternatively, you can use the Makefile, which is just a wrapper of the former commands.
%make
to build.
%make test
to do all tests.
How to use?
The command is identical to Redis. Like
%reredis # start on 127.0.0.1:6379
and
%reredis --bind 0.0.0.0 --port 9090 # binds on all ip address and port 9090
and
%reredis example.conf # configured by example.conf
Other supported configuration are listed here
Supported Commands
The usage of the commands can be looked up here.
- get
- set
- setnx
- del
- exists
- incr
- decr
- mget
- rpush
- lpush
- lpop
- rpop
- llen
- lindex
- lset
- lrange
- ltrim
- lrem
- sadd
- srem
- smove
- sismember
- scard
- spop
- sinter
- sinterstore
- sunion
- sunionstore
- sdiff
- sdiffstore
- smembers
- incrby
- decrby
- getset
- randomkey
- select
- move
- rename
- renamenx
- expire
- keys
- dbsize
- auth
- ping
- echo
- save
- bgsave
- shutdown
- lastsave
- type
- sync
- flushdb
- flushall
- sort
- info
- monitor
- ttl
- slaveof
- object encoding
Relation with Redis
reredis is a reimplementation of Redis, and its protocol is compatible with Redis Protocol(RESP). But the current version of .rdb
file is not compatible with Redis, because the format of ziplist
and intset
is slightly different. I'm still working on it.
Clients
Since the protocal is compatible with Redis. All clients of Redis can be used with reredis, like redis-rs in Rust. There is currently on implementation of redis-cli
in my project, but I'm working on it.
Dependencies
~7–16MB
~200K SLoC