Skip to content

Latest commit

 

History

History
94 lines (60 loc) · 4.06 KB

5.Development.md

File metadata and controls

94 lines (60 loc) · 4.06 KB

RedisSearch开发

RediSearch开发包括配置开发环境(可以是基于Linux或macOS的),构建RediSearch,运行测试用例和基准测试平台,调试RediSearch模块及其测试用例。

克隆git仓库

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

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

在独立环境中运行

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

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

然后,从容器上,cd到 /build目录并进行操作。

在这种模式下,所有安装都保留在Docker容器内。退出容器后,您可以使用上述命令docker exec 重新调用,也可以将容器 状态提交到图像并在稍后阶段重新调用:

docker commit $search redisearch1
docker stop $search
search=$(docker run -d -it -v $PWD:/build rediseatch1 bash)
docker exec -it $search bash

您可以为您选择的操作系统替换 debian:buster ,主机操作系统是最佳选择(因此您可以在构建后在主机上运行 RediSearch 二进制文件)。

安装必备条件

要构建和测试 RediSearch,需要安装多个软件包,具体取决于底层操作系统。目前,我们支持 Ubuntu/Debian、CentOS、Fedora 和 macOS。

首先,进入 RediSearch 目录。

如果已经安装 gnu make ,可以执行,

在 Linux 上:

sudo make setup

在 macOS 上:

make setup

或者,调用以下命令(对于Linux下sudo):

./deps/readies/bin/getpy2
./system-setup.py

请注意,system-setup.py 将使用本机包管理器和pip在您的系统上安装各种包 。

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

  • system-setup.py 手动检查和安装软件包,
  • 使用如上所述的独立环境,
  • 使用Python虚拟环境,然而不再独立环境下使用Python是敏感的: python2 -m virtualenv venv; . ./venv/bin/activate

安装Redis

根据经验,最好运行最新的 Redis 版本。

如果您的操作系统有 Redis 6.x 包,您可以使用操作系统包管理器安装它。

否则,您可以调用 sudo ./deps/readies/bin/getredis . sudo 在 macOS 可不用。

获得帮助

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

从源头构建

make build 将构建 RediSearch。要启用单元测试,请添加 TEST=1 . 请注意,RediSearch 使用 CMake 作为其构建系统。 make build 将调用 CMake 和完成构建所需的后续 make 命令。使用 make clean 删除内置文件。 make clean ALL=1 将删除整个 RediSearch/build 目录。

诊断 CMake

要了解 CMake 决策过程,请添加 WHY=1 到 build 命令。CMake 将其中间文件存储在 RediSearch/build . 之后,可以使用:

cd build
make -n

或者:

cd build
make V=1

进一步诊断构建过程。

使用 RediSearch 运行 Redis

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

make run

您可以 redis-cli 在另一个终端中打开并与之交互。

运行测试

有几组单元测试:*C 测试用例,位于ests/ctests目录下,通过make c_tests运行.

  • C++ 测试用例(由 GTest 启用),位于tests/cpptests目录下 ,通过make cpp_tests运行.
  • Python 测试用例(由 RLTest 启用),位于 tests/pytests目录下 ,通过make pytest 运行.

可以通过命令make test来运行所有测试。可以使用TEST参数运行单个测试,例如 make test TEST=regex 。

调试

启动调试构建(启用符号信息和禁用优化),运行 make DEBUG=1 . 可以使用 make run DEBUG=1 调用 gdb . 除了在 gdb中设置断点的常用方法外,还可以使用 BB 宏在 RediSearch 代码中设置断点。只在gdb下运行时才能运行。

同样,Python 测试在单测试模式下,可以使用 BB() 测试内部的函数设置断点 。