开发

开发 RedisTimeSeries

开发RedisTimeSeries涉及设置开发环境(可以是基于Linux或macOS的),构建RedisTimeSeries模块,运行测试和基准测试,以及调试RedisTimeSeries模块及其测试。

克隆 git 仓库

通过调用以下命令,RedisTimeSeries模块及其子模块被克隆:

git clone --recursive https://github.com/RedisTimeSeries/RedisTimeSeries.git

在隔离环境中工作

在隔离环境中进行开发有几个原因,比如保持工作站的清洁,以及为不同的Linux发行版进行开发。 最通用的隔离环境选项是虚拟机(使用Vagrant非常容易设置)。 Docker是一个更加灵活的解决方案,因为它提供了一个几乎即时的解决方案:

ts=$(docker run -d -it -v $PWD:/build debian:bullseye bash)
docker exec -it $ts bash

然后,在容器内,cd /build 并像往常一样继续。 在这种模式下,所有安装都保留在 Docker 容器的范围内。 退出容器后,您可以使用上述 docker exec 重新调用容器,或者将容器的状态提交到镜像中,并在以后的阶段重新调用它:

docker commit $ts ts1
docker stop $ts
ts=$(docker run -d -it -v $PWD:/build ts1 bash)
docker exec -it $ts bash

安装先决条件

要构建和测试 RedisTimeSeries,您需要根据底层操作系统安装几个软件包。目前,我们支持 Ubuntu/Debian、CentOS、Fedora 和 macOS。

如果你安装了gnu make,你可以执行

cd RedisTimeSeries
make setup

或者,只需调用以下内容:

cd RedisTimeSeries
git submodule update --init --recursive    
./deps/readies/bin/getpy3
./system-setup.py

请注意,system-setup.py 将在您的系统上安装各种包,使用本地的包管理器和pip。这在Linux上需要root权限(即sudo)。

如果您希望避免这种情况,您可以:

  • 查看 system-setup.py 并手动安装包,
  • 使用如上所述的隔离环境,
  • 使用Python虚拟环境,因为已知在不隔离的情况下使用Python安装时容易受到影响。

安装Redis

作为一般规则,最好运行最新版本的Redis。

如果您的操作系统有Redis包,您可以使用操作系统的包管理器进行安装。

否则,你可以调用 ./deps/readies/bin/getredis

获取帮助

make help 提供了开发功能的快速摘要。

从源代码构建

make 将构建 RedisTimeSeries。

构建产物被放置在 bin/linux-x64-release(或类似位置,根据您的平台和构建选项)。

使用make clean来移除构建产物。make clean ALL=1将移除整个二进制产物目录。

使用RedisTimeSeries运行Redis

以下将运行 redis 并加载 RedisTimeSeries 模块。

make run

你可以在另一个终端打开redis-cli来与其交互。

运行测试

该模块包括一组基本的单元测试和集成测试:

  • C单元测试,位于src/tests,通过make unit_tests运行。
  • Python 集成测试(由 RLTest 启用),位于 tests/flow,通过 make flow_tests 运行。

可以通过调用make test来运行所有测试。 可以使用TEST参数运行单个测试,例如make flow_test TEST=file:name

调试

要构建用于调试的版本(启用符号信息并禁用优化),请运行make DEBUG=1。 然后可以使用make run DEBUG=1来调用gdb。 除了在gdb中设置断点的常规方法外,还可以使用BB宏在RedisTimeSeries代码中设置断点。它仅在gdb下运行时有效。

同样地,在单测试模式下进行Python测试时,可以通过在测试中使用BB()函数来设置断点。这将调用pudb

这两种方法可以结合使用:可以在流程测试中设置断点,当到达断点时,将gdb连接到redis-server进程以调试模块。

RATE THIS PAGE
Back to top ↑