2 个版本
0.1.0-alpha.2 | 2019 年 10 月 10 日 |
---|
#1591 in 数据库接口
300KB
9K SLoC
reredis
reredis 是用 Rust 编程语言实现的 Redis (服务器) 重新实现。当前的 Redis 等价版本是 1.x - 2.x。它支持 Linux 和 MacOS(它依赖于 Unix API,如 fork,因此目前没有 Windows 版本)。
许可协议为 BSD 3-Clause。
构建 reredis
reredis 可以在所有支持 Rust 工具链的 *nix 系统上编译(但仅在 Linux 和 MacOS 上进行了测试)。
构建需要 Rust(>= 1.37.0)。要安装 Rust,请参阅此处。
构建命令是
%cargo build --release
并且可执行文件位于 ./target/release/reredis
构建 Redis 后,建议使用以下命令进行测试:
%cargo test # This is unit tests
和
%cargo test --test server_test -- --ignored --nocapture # This is integration tests
或者,您可以使用 Makefile,它只是前面命令的包装器。
%make
来构建。
%make test
执行所有测试。
如何使用?
命令与 Redis 相同。例如
%reredis # start on 127.0.0.1:6379
和
%reredis --bind 0.0.0.0 --port 9090 # binds on all ip address and port 9090
和
%reredis example.conf # configured by example.conf
其他支持的配置列在这里这里
支持命令
可以在这里查找命令的用法这里.
- 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
- 对象编码
与 Redis 的关系
reRedis 是 Redis 的重写实现,其协议与 Redis 协议(RESP)兼容。但当前版本的 .rdb
文件与 Redis 不兼容,因为 ziplist
和 intset
的格式略有不同。我仍在努力解决此问题。
客户端
由于协议与 Redis 兼容,所有 Redis 客户端都可以与 reRedis 一起使用,例如 Rust 中的 redis-rs。我的项目中目前有一个 redis-cli
的实现,但我仍在努力完善它。
依赖项
~7-16MB
~200K SLoC