本自述文件正在构建中,我们致力于构建一个新的社区驱动的高性能键值存储。
该项目是在过渡到新的源可用许可证之前从开源 Redis 项目中分叉出来的。
本自述文件只是一个快速入门文档。我们目前正在开发一个更永久的文档页面。
该名称是临时的,我们正在努力寻找社区接受的新名称。它也恰好是一个非常容易搜索的字符串。
PlaceHolderKV 可以在 Linux、OSX、OpenBSD、NetBSD、FreeBSD 上编译和使用。我们支持大端和小端架构,以及 32 位和 64 位系统。
它可以在 Solaris 派生系统(例如 SmartOS)上编译,但我们会尽力支持该平台,并且不保证 PlaceHolderKV 在 Linux、OSX 和 *BSD 中也能正常工作。
它很简单:
% make
要使用 TLS 支持进行构建,您需要 OpenSSL 开发库(例如 Debian/Ubuntu 上的 libssl-dev)并运行:
% make BUILD_TLS=yes
要使用 systemd 支持进行构建,您需要 systemd 开发库(例如 Debian/Ubuntu 上的 libsystemd-dev 或 CentOS 上的 systemd-devel)并运行:
% make USE_SYSTEMD=yes
要将后缀附加到 PlaceHolderKV 程序名称,请使用:
% make PROG_SUFFIX="-alt"
您可以使用以下命令构建 32 位 PlaceHolderKV 二进制文件:
% make 32bit
构建 PlaceHolderKV 后,最好使用以下命令对其进行测试:
% make test
如果构建了 TLS,请在启用 TLS 的情况下运行测试(您需要tcl-tls
安装):
% ./utils/gen-test-certs.sh
% ./runtest --tls
PlaceHolderKV 有一些依赖项包含在deps
目录中。
make
即使依赖项的源代码中的某些内容发生更改,也不会自动重建依赖项。
当您更新源代码git pull
或以任何其他方式修改依赖关系树中的代码时,请确保使用以下命令以便真正清理所有内容并从头开始重建:
% make distclean
这将清理:jemalloc、lua、hiplaceholderkv、linenoise 和其他依赖项。
此外,如果您强制使用某些构建选项,例如 32 位目标、无 C 编译器优化(用于调试目的)以及其他类似的构建时选项,则这些选项将无限期缓存,直到您发出命令make distclean
。
如果使用 32 位目标构建 PlaceHolderKV 后,您需要使用 64 位目标重建它,或者反之亦然,则需要
make distclean
在 PlaceHolderKV 发行版的根目录中执行 a。
如果在尝试构建 PlaceHolderKV 的 32 位二进制文件时出现构建错误,请尝试以下步骤:
- 安装 libc6-dev-i386 软件包(也可以尝试 g++-multilib)。
- 尝试使用以下命令行而不是
make 32bit
:make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
在构建 PlaceHolderKV 时选择非默认内存分配器是通过设置MALLOC
环境变量来完成的。默认情况下,PlaceHolderKV 是针对 libc malloc 进行编译和链接的,但 Linux 系统上的默认情况是 jemalloc。选择此默认值是因为 jemalloc 已被证明比 libc malloc 具有更少的碎片问题。
要强制针对 libc malloc 进行编译,请使用:
% make MALLOC=libc
要在 Mac OS X 系统上针对 jemalloc 进行编译,请使用:
% make MALLOC=jemalloc
默认情况下,PlaceHolderKV 将使用 POSIX Clock_gettime 函数作为单调时钟源进行构建。在大多数现代系统中,内部处理器时钟可用于提高性能。注意事项可以在这里找到: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/
要构建对处理器内部指令时钟的支持,请使用:
% make CFLAGS="-DUSE_PROCESSOR_CLOCK"
默认情况下,PlaceHolderKV 将使用用户友好的彩色输出进行构建。如果您想查看更详细的输出,请使用以下命令:
% make V=1
要使用默认配置运行 PlaceHolderKV,只需键入:
% cd src
% ./placeholderkv-server
如果您想提供 placeholderkv.conf,则必须使用附加参数(配置文件的路径)运行它:
% cd src
% ./placeholderkv-server /path/to/placeholderkv.conf
可以通过使用命令行直接将参数作为选项传递来更改 PlaceHolderKV 配置。例子:
% ./placeholderkv-server --port 9999 --replicaof 127.0.0.1 6379
% ./placeholderkv-server /etc/placeholderkv/6379.conf --loglevel debug
placeholderkv.conf 中的所有选项也支持作为使用命令行的选项,且名称完全相同。
请查阅TLS.md文件,了解有关如何将 PlaceHolderKV 与 TLS 结合使用的更多信息。
您可以使用 placeholderkv-cli 来使用 PlaceHolderKV。启动 placeholderkv-server 实例,然后在另一个终端中尝试以下操作:
% cd src
% ./placeholderkv-cli
placeholderkv> ping
PONG
placeholderkv> set foo bar
OK
placeholderkv> get foo
"bar"
placeholderkv> incr mycounter
(integer) 1
placeholderkv> incr mycounter
(integer) 2
placeholderkv>
为了将 PlaceHolderKV 二进制文件安装到 /usr/local/bin 中,只需使用:
% make install
make PREFIX=/some/other/directory install
如果您想使用不同的目的地,则可以使用。
make install
只会在您的系统中安装二进制文件,但不会在适当的位置配置初始化脚本和配置文件。如果您只是想玩一下 PlaceHolderKV,则不需要这样做,但如果您以适用于生产系统的正确方式安装它,我们有一个脚本可以为 Ubuntu 和 Debian 系统执行此操作:
% cd utils
% ./install_server.sh
注意:install_server.sh
不适用于 Mac OSX;它仅针对 Linux 构建。
该脚本会问您几个问题,并设置您正确运行 PlaceHolderKV 所需的一切,作为后台守护进程,该守护进程将在系统重新启动时重新启动。
/etc/init.d/placeholderkv_<portnumber>
例如,您将能够使用名为 的脚本来停止和启动 PlaceHolderKV
/etc/init.d/placeholderkv_6379
。
注意:通过以任何形式向 PlaceHolderKV 项目贡献代码,包括通过 Github 发送拉取请求、通过私人电子邮件或公共讨论组发送代码片段或补丁,即表示您同意根据 BSD 许可条款发布您的代码,您可以在 PlaceHolderKV 源发行版中包含的COPYING文件中查找。
请参阅此源发行版中的CONTRIBUTING.md文件以获取更多信息。有关安全错误和漏洞,请参阅SECURITY.md。