Project Icon

valkey

快速开源键值存储系统 支持多种数据结构和插件

Valkey是一个开源的高性能键值存储系统,支持多种数据结构和可扩展插件。它可在主流操作系统上运行,提供简单的编译安装方法,并支持TLS加密。Valkey适用于需要快速数据存取的各类应用场景。

codecov

这份README正在建设中,我们正在努力构建一个新的社区驱动的高性能键值存储。

本项目是在Redis项目转向新的源代码可用许可证之前从开源Redis项目分叉而来的。

这份README只是一个快速入门文档。我们目前正在制作一个更加完整的文档页面。

什么是Valkey?

Valkey是一个高性能数据结构服务器,主要用于处理键/值工作负载。 它支持广泛的原生结构和可扩展的插件系统,用于添加新的数据结构和访问模式。

构建Valkey

Valkey可以在Linux、OSX、OpenBSD、NetBSD和FreeBSD上编译和使用。 我们支持大端和小端架构,以及32位和64位系统。

它可能可以在Solaris衍生系统(例如SmartOS)上编译,但我们对这个平台的支持是"尽力而为"的,Valkey不能保证在这些系统上像在Linux、OSX和*BSD上那样运行良好。

构建过程非常简单:

% make

要构建带TLS支持的版本,你需要OpenSSL开发库(例如Debian/Ubuntu上的libssl-dev)并运行:

% make BUILD_TLS=yes

要构建带实验性RDMA支持的版本,你需要RDMA开发库(例如Debian/Ubuntu上的librdmacm-dev和libibverbs-dev)。目前,Valkey仅支持RDMA作为连接模块模式。运行:

% make BUILD_RDMA=module

要构建带systemd支持的版本,你需要systemd开发库(例如Debian/Ubuntu上的libsystemd-dev或CentOS上的systemd-devel)并运行:

% make USE_SYSTEMD=yes

要为Valkey程序名称添加后缀,使用:

% make PROG_SUFFIX="-alt"

你可以构建32位的Valkey二进制文件,使用:

% make 32bit

构建Valkey后,最好进行测试:

% make test

如果构建了TLS支持,可以启用TLS运行测试(你需要安装tcl-tls):

% ./utils/gen-test-certs.sh
% ./runtest --tls

修复依赖项或缓存的构建选项导致的构建问题

Valkey有一些依赖项,它们包含在deps目录中。即使依赖项的源代码发生变化,make也不会自动重新构建依赖项。

当你使用git pull更新源代码时,或者当依赖项树中的代码以任何其他方式被修改时,请确保使用以下命令来彻底清理所有内容并从头开始重新构建:

% make distclean

这将清理:jemalloc、lua、hiredis、linenoise和其他依赖项。

另外,如果你强制使用某些构建选项,如32位目标、无C编译器优化(用于调试目的)和其他类似的构建时选项,这些选项会被无限期缓存,直到你执行make distclean命令。

修复构建32位二进制文件的问题

如果在构建32位目标的Valkey后,你需要重新构建64位目标,或者反之,你需要在Valkey分发的根目录中执行make distclean。

如果在尝试构建32位Valkey二进制文件时遇到构建错误,请尝试以下步骤:

  • 安装libc6-dev-i386包(也可以尝试g++-multilib)。
  • 尝试使用以下命令行代替make 32bit: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"

内存分配器

在构建Valkey时选择非默认内存分配器是通过设置MALLOC环境变量来完成的。默认情况下,Valkey编译并链接到libc malloc,但在Linux系统上默认使用jemalloc。选择这个默认值是因为jemalloc已经证明比libc malloc有更少的内存碎片问题。

要强制编译使用libc malloc,使用:

% make MALLOC=libc

要在Mac OS X系统上编译使用jemalloc,使用:

% make MALLOC=jemalloc

单调时钟

默认情况下,Valkey将使用POSIX clock_gettime函数作为单调时钟源。在大多数现代系统上,可以使用内部处理器时钟来提高性能。相关注意事项可以在这里找到: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/

要构建支持处理器内部指令时钟的版本,使用:

% make CFLAGS="-DUSE_PROCESSOR_CLOCK"

详细构建输出

默认情况下,Valkey将以用户友好的彩色输出进行构建。 如果你想看到更详细的输出,请使用以下命令: % make V=1

运行 Valkey

要使用默认配置运行 Valkey,只需输入:

% cd src
% ./valkey-server

如果你想提供自己的 valkey.conf,则需要使用一个额外的参数(配置文件的路径)来运行:

% cd src
% ./valkey-server /path/to/valkey.conf

也可以通过在命令行中直接传递参数作为选项来更改 Valkey 配置。例如:

% ./valkey-server --port 9999 --replicaof 127.0.0.1 6379
% ./valkey-server /etc/valkey/6379.conf --loglevel debug

valkey.conf 中的所有选项也都支持作为命令行选项使用,名称完全相同。

使用 TLS 运行 Valkey:

请查阅 TLS.md 文件,了解更多关于如何使用 TLS 运行 Valkey 的信息。

使用 RDMA 运行 Valkey:

请注意,基于 RDMA 的 Valkey 是一项实验性功能。 它可能会在任何次要或主要版本中被更改或移除。 目前仅支持在 Linux 上使用。

要手动以 RDMA 模式运行 Valkey 服务器:

% ./src/valkey-server --protected-mode no \
     --loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379

可以通过运行时命令更改 RDMA 的绑定地址/端口:

192.168.122.100:6379> CONFIG SET rdma.port 6380

也可以同时使用 RDMA 和 TCP,TCP(6379) 和 RDMA(6379) 之间不会冲突,例如:

% ./src/valkey-server --protected-mode no \
     --loadmodule src/valkey-rdma.so bind=192.168.122.100 port=6379 \
     --port 6379

注意,网卡(本例中的 192.168.122.100)应该支持 RDMA。要测试服务器是否支持 RDMA:

% rdma res show (需要新版本的 iproute2 包)

或:

% ibv_devices

使用 Valkey

你可以使用 valkey-cli 来操作 Valkey。启动一个 valkey-server 实例,然后在另一个终端中尝试以下操作:

% cd src
% ./valkey-cli
valkey> ping
PONG
valkey> set foo bar
OK
valkey> get foo
"bar"
valkey> incr mycounter
(integer) 1
valkey> incr mycounter
(integer) 2
valkey>

安装 Valkey

要将 Valkey 二进制文件安装到 /usr/local/bin,只需使用:

% make install

如果你希望使用其他目标目录,可以使用 make PREFIX=/some/other/directory install

注意:为了与 Redis 兼容,我们会从 Redis 名称(redis-serverredis-cli 等)创建符号链接到 make install 安装的 Valkey 二进制文件。 符号链接创建在与 Valkey 二进制文件相同的目录中。 使用 make uninstall 时会删除这些符号链接。 可以通过设置 makefile 变量 USE_REDIS_SYMLINKS=no 来跳过创建符号链接。

make install 只会在你的系统中安装二进制文件,但不会在适当的位置配置初始化脚本和配置文件。如果你只是想稍微尝试一下 Valkey,这并不需要,但如果你要为生产系统正确安装它,我们有一个适用于 Ubuntu 和 Debian 系统的脚本:

% cd utils
% ./install_server.sh

注意:install_server.sh 不适用于 Mac OSX;它只为 Linux 设计。

该脚本会询问你一些问题,并设置运行 Valkey 所需的一切,使其作为后台守护进程正常运行,并在系统重启时自动启动。

你可以使用名为 /etc/init.d/valkey_<端口号> 的脚本来停止和启动 Valkey,例如 /etc/init.d/valkey_6379

代码贡献

请参阅 CONTRIBUTING.md。对于安全漏洞和漏洞,请参阅 SECURITY.md

Valkey 是 LF Projects 下的一个开放社区项目

Valkey 是 LF Projects, LLC 的一个系列项目 2810 N Church St, PMB 57274 Wilmington, Delaware 19802-4447

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号