documentation.suse.com / Valkey 简介
SUSE Linux Enterprise Server 16.0

Valkey 简介

出版日期:2025 年 11 月 04 日
内容

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 是一款开源的内存中数据存储系统,可用作数据库、缓存、消息代理和流处理引擎。

过程 1︰ 创建 Valkey systemd 服务文件
  1. 安装 Valkey:

    > sudo  zypper -n in valkey
  2. 创建 Valkey systemd 服务文件:

    > sudo  vi /etc/systemd/system/valkey.service
  3. 在该文件中添加以下内容:

    [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
  4. 将示例文件复制到指定配置文件中:

    > sudo  cp /etc/valkey/default.conf.example /etc/valkey/valkey.conf
  5. 更新文件权限:

    > sudo  chown valkey:valkey /etc/valkey/valkey.conf
  6. 启动并启用 Valkey 服务:

    > sudo  systemctl start valkey
    > sudo  systemctl enable valkey
  7. 验证 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

列出所有可用的群集管理命令。

例 1︰ 基本 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
    OK
  • KEYS:查找匹配指定模式的所有键。

    > valkey-cli KEYS "*" # All keys
    "TESTKEY"
    "TESTKEY1"

2.3 从 Redis 迁移至 Valkey

Valkey 可无缝替代 Redis,它保持了与 Redis API、协议、持久化数据、端口和配置文件的兼容性。对于许多基本设置场景,从 Redis 迁移至 Valkey 的过程十分简便。以下过程假设 Redis 已安装、正在运行且已加载数据。

过程 2︰ 从 Redis 迁移至 Valkey 的方式
  1. 查看当前 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
            [...]
  2. 安装 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、协议、持久化数据、端口和配置文件。

  3. 启动并启用 Valkey:

    > sudo  systemctl start valkey
    > sudo  systemctl enable valkey
  4. 查看服务器信息:

    > 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.4valkey_version:7.2.5。保留 redis_version 是为了确保最大程度的兼容性,同时通过 valkey_version 标识服务器为 Valkey。Valkey 的二进制文件名为 valkey-cli,但其会创建 redis-cli 的符号链接。这两个命令行工具的功能完全相同。