Giter Club home page Giter Club logo

placeholderkv's Introduction

本自述文件正在构建中,我们致力于构建一个新的社区驱动的高性能键值存储。

该项目是在过渡到新的源可用许可证之前从开源 Redis 项目中分叉出来的。

本自述文件只是一个快速入门文档。我们目前正在开发一个更永久的文档页面。

什么是 PlaceHolderKV?

该名称是临时的,我们正在努力寻找社区接受的新名称。它也恰好是一个非常容易搜索的字符串。

构建占位符KV

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 位二进制文​​件的问题

如果使用 32 位目标构建 PlaceHolderKV 后,您需要使用 64 位目标重建它,或者反之亦然,则需要 make distclean在 PlaceHolderKV 发行版的根目录中执行 a。

如果在尝试构建 PlaceHolderKV 的 32 位二进制文​​件时出现构建错误,请尝试以下步骤:

  • 安装 libc6-dev-i386 软件包(也可以尝试 g++-multilib)。
  • 尝试使用以下命令行而不是make 32bitmake 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

运行占位符KV

要使用默认配置运行 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 运行 PlaceHolderKV:

请查阅TLS.md文件,了解有关如何将 PlaceHolderKV 与 TLS 结合使用的更多信息。

使用 PlaceHolderKV

您可以使用 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

为了将 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

placeholderkv's People

Contributors

antirez avatar oranagra avatar pietern avatar enjoy-binbin avatar yossigo avatar soloestoy avatar hwware avatar mattsta avatar guybe7 avatar madolson avatar artix75 avatar itamarhaber avatar sundb avatar meirshpilraien avatar huangzhw avatar zuiderkwast avatar yoav-steinberg avatar shooterit avatar trevor211 avatar filipecosta90 avatar devnexen avatar badboy avatar dvirsky avatar hpatro avatar 0xtonyxia avatar tezc avatar chenyang8094 avatar geoffgarside avatar charsyam avatar charleschen888 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.