#redis #redis-server #language #version #command #clients

bin+lib reredis

reredis 是用 Rust 编程语言实现的 Redis (服务器) 重新实现

2 个版本

0.1.0-alpha.22019 年 10 月 10 日

#1591 in 数据库接口

自定义许可

300KB
9K SLoC

reredis

reredis 是用 Rust 编程语言实现的 Redis (服务器) 重新实现。当前的 Redis 等价版本是 1.x - 2.x。它支持 Linux 和 MacOS(它依赖于 Unix API,如 fork,因此目前没有 Windows 版本)。

Build Status Crates.io

许可协议为 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 不兼容,因为 ziplistintset 的格式略有不同。我仍在努力解决此问题。

客户端

由于协议与 Redis 兼容,所有 Redis 客户端都可以与 reRedis 一起使用,例如 Rust 中的 redis-rs。我的项目中目前有一个 redis-cli 的实现,但我仍在努力完善它。

依赖项

~7-16MB
~200K SLoC