valkey

valkey

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

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

Valkey键值存储高性能数据结构服务器开源项目Github

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

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多