跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    在 Fedora 上跑 Valkey 9.1:装、起服务、连上去,以及它与 Redis 的关系

    Fedora 上如果要跑 Redis 类服务,装的是 Valkey。

    Terminal window
    dnf list --available redis

    没有 redis 这个包。仓库里能装到的是:

    Terminal window
    dnf list --available valkey
    valkey.x86_64 9.1.2-1.fc45 fedora

    Valkey 是 Redis 7.2 之后由社区接管的分支(Linux 基金会),Fedora 把默认的内存数据库换成了它。

    redis 已由 valkey 9.1.2 承接,默认只绑回环

    Terminal window
    sudo dnf install valkey

    包很小:下载 1.9 MiB,安装 6.6 MiB。

    装完有两个服务单元,但默认都不启动:

    Terminal window
    systemctl list-unit-files | grep -i valkey
    valkey-sentinel.service disabled disabled
    valkey.service disabled disabled

    valkey.service 是单机服务,valkey-sentinel.service 是高可用哨兵。日常先起主服务:

    Terminal window
    sudo systemctl enable --now valkey
    systemctl is-active valkey
    valkey-cli ping
    active
    PONG

    PONG 就是活了。

    Terminal window
    valkey-server --version
    Valkey server v=9.1.2 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=fa6c1330cfae654d

    几个信息值得注意:

    • jemalloc-5.3.0——Valkey 用 jemalloc 而不是 glibc malloc,这是它内存碎片控制做得好的原因之一
    • bits=64 说明是 64 位构建
    • sha=00000000:0 是打包时被抹掉的构建信息,不是错误
    Terminal window
    ss -lntp | grep 6379
    LISTEN 0 511 127.0.0.1:6379 0.0.0.0:*
    LISTEN 0 511 [::1]:6379 [::]:*

    或者直接问服务自己:

    Terminal window
    valkey-cli config get bind
    bind
    127.0.0.1 -::1

    127.0.0.1 加 IPv6 回环,外部连不上。这是 Fedora 的默认策略——数据库不该默认暴露在网络上。

    要让别的机器连,改 /etc/valkey/valkey.conf:

    bind 0.0.0.0 -::
    protected-mode yes

    然后 sudo systemctl restart valkey。

    Terminal window
    valkey-cli set demo "hello fedora"
    valkey-cli get demo
    OK
    hello fedora

    看当前库里有什么:

    Terminal window
    valkey-cli info keyspace
    # Keyspace
    db0:keys=1,expires=0,avg_ttl=0,keys_with_volatile_items=0

    db0:keys=1 就是有一个键。expires=0 表示没有设过期时间。

    Terminal window
    rpm -ql valkey | grep '\.conf$'
    /etc/valkey/sentinel.conf
    /etc/valkey/valkey.conf
    /usr/lib/sysusers.d/valkey.conf

    主配置是 /etc/valkey/valkey.conf(不是 Redis 时代习惯的 /etc/redis/redis.conf)。

    仓库里没有 redis 包,但有一个兼容包:

    Terminal window
    dnf list --available 'valkey-compat*'
    valkey-compat-redis.noarch 9.1.2-1.fc45 fedora

    装它之后,原本调 redis-cli / redis-server 的脚本可以继续跑,实际执行的是 Valkey。

    老命令实际调用
    redis-clivalkey-cli
    redis-servervalkey-server
    redis-sentinelvalkey-sentinel
    项目说明
    配置文件路径/etc/redis/redis.conf → /etc/valkey/valkey.conf
    服务名redis.service → valkey.service
    数据目录检查 dir 配置项,别让新服务指向空目录
    持久化文件RDB/AOF 格式兼容,可直接搬 dump.rdb
    认证默认无密码,迁移后务必补 requirepass
    客户端协议兼容,库不用改
    现象原因
    valkey-cli 连不上服务没启动,systemctl start valkey
    远程连 6379 超时默认只绑 127.0.0.1,要改 bind
    装了 valkey 但还是找不到 redis-cli需要额外装 valkey-compat-redis
    重启后数据没了没开持久化,检查 save 与 appendonly 配置
    内存涨到机器卡死没设 maxmemory,Valkey 不会自动限流