Valkey 简介
- 内容
Valkey 是一款开源的内存中数据结构存储系统,具备多种出色功能,适合用作数据库、缓存、消息代理和流处理引擎。它可提供高性能、可伸缩且用途广泛的内存中数据存储功能,凭借增强的多线程特性和可靠性,对提升应用程序运行速度、高效管理各类数据需求可发挥关键作用。
- 原因
了解如何安装和配置 Valkey。
- 工作量
读完本文需要 40 分钟。
- 目标
在 SUSE Linux Enterprise Server 上设置 Valkey,或从 Redis 迁移至 Valkey。
1 关于 Valkey #
Valkey 是 Redis 7.2.4 版本的分支。它是一款开源的内存中数据结构存储系统,基于 BSD(伯克利软件发行版)许可证授权,可作为适用于各类应用的通用平台。它具备多种出色功能:作为数据库,提供快速灵活的数据存储服务;作为缓存,显著提升应用程序性能;作为消息代理,支持异步通信;甚至可作为流处理引擎,用于进行实时数据处理。Valkey 在 Redis OSS 基础上构建而成,融入多线程特性以提升性能,为在速度、可伸缩性和多类型数据处理能力方面有要求的应用程序提供稳健的解决方案。
Valkey 拥有诸多优势,包括:
对内存中存储的数据提供快速、低延迟的访问,非常适合缓存、实时分析和消息代理场景。
支持多种强大且灵活的数据结构,如字符串、哈希、列表、集合、有序集合、流和地理空间索引。
提供 RDB(Redis 数据库备份)快照和 AOF(仅追加文件)持久化功能,可在重启后恢复数据。
通过在多个节点间对数据进行分区,实现横向扩容。
与 Redis 7.2 版本兼容,无需更改现有客户端库或应用程序逻辑即可轻松迁移。
内置发布/订阅功能,便于构建事件驱动型或基于消息传递的系统。
有关 Valkey 的详细信息,请访问 https://valkey.io/docs/。
2 管理 Valkey #
本章将介绍如何安装 Valkey、使用命令行工具,以及从 Redis 迁移至 Valkey。
2.1 设置 Valkey 服务文件 #
Valkey 是一款开源的内存中数据存储系统,可用作数据库、缓存、消息代理和流处理引擎。
systemd 服务文件 #安装 Valkey:
>sudozypper -n in valkey创建 Valkey
systemd服务文件:>sudovi /etc/systemd/system/valkey.service在该文件中添加以下内容:
[Unit] Description=Valkey In-Memory Data Store After=network.target [Service] User=valkey Group=valkey ExecStart=/usr/sbin/redis-server /etc/redis/valkey.conf LimitNOFILE=10240 ExecStop=/usr/bin/valkey-cli shutdown Restart=always [Install] WantedBy=multi-user.target将示例文件复制到指定配置文件中:
>sudocp /etc/valkey/default.conf.example /etc/valkey/valkey.conf更新文件权限:
>sudochown valkey:valkey /etc/valkey/valkey.conf启动并启用 Valkey 服务:
>sudosystemctl start valkey>sudosystemctl enable valkey验证 Valkey 设置:
valkey-cli ping
如果命令输出
PONG,则表示 Valkey 已在系统上正常运行。
2.2 Valkey 命令行界面 #
Valkey 命令行界面用于管理、调试和测试 Valkey。默认情况下,valkey-cli 命令会连接地址为 127.0.0.1、端口为 6379 的服务器。
valkey-cli 命令的部分选项如下:
-
-h 指定服务器主机名,默认 IP 为 127.0.0.1。
-
-p 指定服务器端口,默认端口号为 6379。
-
-t 指定服务器连接超时时间(单位:秒,支持小数)。默认超时时间为
0,即无限制(具体取决于操作系统)。-
-s 指定服务器套接字,此选项会覆盖主机名和端口设置。
-
-a 指定连接服务器时使用的口令。也可通过
VALKEYCLI_AUTH环境变量更安全地传递该口令。如果同时使用两种方式,此参数优先级更高。-
--user 指定用于发送 ACL(访问控制列表)格式认证信息的用户名,该认证格式为
AUTH username pass。需搭配-a选项使用。-
--pass 用于指定口令,是
-a选项的别名,其设计目的是与新增的--user选项相匹配。-
--askpass 强制通过 STDIN(标准输入)输入口令并隐藏输入内容。如果使用此参数,则
-a选项和VALKEYCLI_AUTH环境变量将被忽略。-
-u 指定服务器 URI,格式为
valkey://user:password@host:port/dbnum。其中用户名、口令和数据库编号为可选参数。如果无需用户名即可进行身份验证,则使用用户名default。如果需要使用 TLS,则使用协议valkeys。-
--help 输出帮助信息并退出。
-
--version 输出版本信息并退出。
-
--cluster help 列出所有可用的群集管理命令。
valkey-cli 命令示例: #SET:设置键值对。>valkey-cli SET KEY_NAME "Hello Valkey"例如:
>valkey-cli SET TESTKEY "Hello Valkey"GET:检索与指定键关联的值。>valkey-cli GET TESTKEY "Hello Valkey"DEL:删除指定键。>valkey-cli DEL TESTKEY (integer) 1输出
1表示删除成功,输出0表示未找到该键。INFO:显示 Valkey 服务器的信息和统计数据。>valkey-cli INFO Server redis_version:7.2.4 server_name:valkey valkey_version:8.0.2 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:e0cc1d08b1f9571a server_mode:standalone os:Linux 6.12.0-160000.9-default x86_64 arch_bits:64 monotonic_clock:POSIX clock_gettime multiplexing_api:epoll gcc_version:13.3.1 process_id:974 process_supervised:no run_id:32864c141804bcb17cae98145beee86ca251afd7 tcp_port:6379 server_time_usec:1750760734442451 uptime_in_seconds:2780 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:5930270 executable:/usr/sbin/redis-server config_file:/etc/valkey/valkey.conf io_threads_active:0 availability_zone: [...]MONITOR:实时流式输出 Valkey 服务器处理的所有命令。>valkey-cli MONITOR OKKEYS:查找匹配指定模式的所有键。>valkey-cli KEYS "*" # All keys "TESTKEY" "TESTKEY1"
2.3 从 Redis 迁移至 Valkey #
Valkey 可无缝替代 Redis,它保持了与 Redis API、协议、持久化数据、端口和配置文件的兼容性。对于许多基本设置场景,从 Redis 迁移至 Valkey 的过程十分简便。以下过程假设 Redis 已安装、正在运行且已加载数据。
查看当前 Redis 服务器版本:
>redis-cli info server # Server redis_version:7.2.4 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:8c22b097984bd350 redis_mode:standalone [...]安装 valkey-compat-redis 软件包,并使用
--force-resolution选项:>sudo# zypper in --force-resolution valkey-compat-redis Refreshing service 'NVIDIA'. Refreshing service 'openSUSE'. Loading repository data... Reading installed packages... Resolving package dependencies... The following 2 NEW packages are going to be installed: valkey valkey-compat-redis The following package is going to be REMOVED: redis 2 new packages to install, 1 to remove. Package download size: 1.3 MiB Package install size change: | 5.2 MiB required by packages that will be installed -245.2 KiB | - 5.4 MiB released by packages that will be removed Backend: classic_rpmtrans Continue? [y/n/p/...? shows all options] (y):该软件包会自动获取现有的 Redis 配置文件和持久化数据,并将其迁移至 Valkey,而无需用户执行额外操作。之所以能实现这种无缝迁移,是因为 Valkey 完全兼容 Redis 的 API、协议、持久化数据、端口和配置文件。
启动并启用 Valkey:
>sudosystemctl start valkey>sudosystemctl enable valkey查看服务器信息:
>redis-cli info server # Server redis_version:7.2.4 server_name:valkey valkey_version:7.2.5 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:b0d9f188ef999bd3 redis_mode:standalone [...]Valkey 同时支持识别
redis_version:7.2.4和valkey_version:7.2.5。保留redis_version是为了确保最大程度的兼容性,同时通过valkey_version标识服务器为 Valkey。Valkey 的二进制文件名为valkey-cli,但其会创建redis-cli的符号链接。这两个命令行工具的功能完全相同。
3 法律声明 #
版权所有© 2006–2025 SUSE LLC 和撰稿人。保留所有权利。
根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可证附带不可变部分。许可版本 1.2 的副本包含在“GNU Free Documentation License”部分。
有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。
本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。