TL;DR — Quick Summary

Valkey is the Linux Foundation's open-source Redis fork. Install it, migrate from Redis with zero data loss, and configure clusters and Sentinel HA.

Valkey is the Linux Foundation’s open-source fork of Redis, created after Redis Ltd changed its license away from BSD in March 2024. If you run Redis in production and want to stay on a truly open-source, community-governed key-value store, this guide walks you through understanding Valkey, installing it, migrating from Redis with zero data loss, and operating clusters and Sentinel HA.

Why Valkey Exists

Redis was BSD-licensed from 2009 through early 2024. On March 20, 2024, Redis Ltd relicensed Redis under a dual SSPL/RSAL model — neither license is OSI-approved, meaning Redis is no longer open source by the standard definition. Cloud providers and contributors who had built on Redis’s open governance forked the last BSD-licensed release (7.2.4) within days.

The Linux Foundation accepted the fork as Valkey in April 2024, backed by Amazon Web Services, Google Cloud, Oracle, Ericsson, Snap, and many individual contributors. Valkey is governed under the Linux Foundation’s neutral, community-first model — the same umbrella as Linux, Kubernetes, and Node.js.

The practical result: Valkey tracks the Redis 7.2 codebase, is drop-in compatible, and receives new features (RDMA support, per-slot dict in cluster mode, dual-channel replication) that Redis OSS no longer ships.

Prerequisites

  • A Linux server running Ubuntu 22.04+, Debian 12+, RHEL 9+, or any modern distro.
  • Existing Redis 6.x or 7.x installation (if migrating).
  • sudo access or root.
  • Docker (optional, for the container path).

Installing Valkey

apt (Debian/Ubuntu)

curl -fsSL https://packages.valkey.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/valkey.gpg
echo "deb [signed-by=/usr/share/keyrings/valkey.gpg] https://packages.valkey.io/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/valkey.list
sudo apt update && sudo apt install -y valkey

dnf (RHEL/Fedora/Rocky)

sudo dnf install -y https://packages.valkey.io/rpm/valkey-release-latest.rpm
sudo dnf install -y valkey

Docker

# Single instance
docker run -d --name valkey -p 6379:6379 valkey/valkey:latest

# With persistence
docker run -d \
  --name valkey \
  -p 6379:6379 \
  -v valkey-data:/data \
  valkey/valkey:latest valkey-server --save 60 1 --loglevel warning

Build from Source

git clone https://github.com/valkey-io/valkey.git
cd valkey && git checkout 7.2.9
make -j$(nproc)
sudo make install

Migrating from Redis to Valkey

Valkey reads Redis RDB snapshot and AOF journal files directly — no conversion required.

Step 1: Flush and Save Redis Data

redis-cli SAVE
sudo cp -r /var/lib/redis /var/lib/redis-backup

Step 2: Stop Redis

sudo systemctl stop redis-server
sudo systemctl disable redis-server

Step 3: Configure Valkey

sudo cp /etc/redis/redis.conf /etc/valkey/valkey.conf
# Point Valkey at the existing data directory
sudo sed -i 's|^dir .*|dir /var/lib/redis|' /etc/valkey/valkey.conf

valkey.conf uses identical syntax to redis.conf. Every directive — bind, requirepass, maxmemory, eviction policies, TLS, RDB, AOF — works unchanged.

Step 4: Update the systemd Unit

sudo systemctl enable valkey-server
sudo systemctl start valkey-server

Step 5: Verify the Migration

valkey-cli PING          # → PONG
valkey-cli INFO server   # shows Valkey version and data loaded
valkey-cli DBSIZE        # confirm key count matches pre-migration

Step 6: Update Application Connection Strings

Change host: redis to host: valkey (or the new IP/hostname). No other code changes are needed — all Redis client libraries connect to Valkey transparently.


Configuration Reference

Key valkey.conf settings identical to redis.conf:

DirectiveExamplePurpose
bindbind 127.0.0.1 ::1Listen addresses
requirepassrequirepass s3cr3tPassword auth
maxmemorymaxmemory 2gbMemory cap
maxmemory-policyallkeys-lruEviction policy
savesave 900 1RDB snapshot schedule
appendonlyappendonly yesEnable AOF
appendfsyncappendfsync everysecAOF fsync mode
tls-porttls-port 6380TLS listener

New Valkey Features (Beyond Redis 7.2)

Valkey ships several improvements not present in Redis OSS:

  • RDMA transport — Remote Direct Memory Access for ultra-low-latency clusters (Valkey 8.0+).
  • Per-slot dict in cluster mode — Each of the 16,384 hash slots gets its own dictionary, reducing lock contention and improving cluster throughput.
  • Dual-channel replication — Replicas use a dedicated channel for bulk data transfer and another for live command streaming, reducing full-sync impact on primaries.
  • Improved memory efficiency — listpack encoding threshold tuning, reduced per-key overhead vs Redis 7.2.

Valkey Cluster

Valkey Cluster uses the same 16,384 hash-slot model as Redis Cluster. Existing cluster tooling works unchanged.

# Create a 6-node cluster (3 primary + 3 replica)
valkey-cli --cluster create \
  192.168.1.1:7000 192.168.1.2:7001 192.168.1.3:7002 \
  192.168.1.4:7003 192.168.1.5:7004 192.168.1.6:7005 \
  --cluster-replicas 1

# Check cluster status
valkey-cli --cluster check 192.168.1.1:7000

# Reshard slots
valkey-cli --cluster reshard 192.168.1.1:7000

# Add a new node
valkey-cli --cluster add-node 192.168.1.7:7006 192.168.1.1:7000

Sentinel for High Availability

valkey-sentinel replaces redis-sentinel with identical configuration:

# /etc/valkey/sentinel.conf
sentinel monitor mymaster 192.168.1.1 6379 2
sentinel auth-pass mymaster s3cr3t
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
valkey-sentinel /etc/valkey/sentinel.conf

Docker Compose Production Setup with Sentinel

services:
  valkey-primary:
    image: valkey/valkey:latest
    command: valkey-server --requirepass ${VALKEY_PASSWORD} --appendonly yes
    volumes:
      - valkey-primary-data:/data
    networks: [valkey-net]

  valkey-replica:
    image: valkey/valkey:latest
    command: >
      valkey-server
      --replicaof valkey-primary 6379
      --requirepass ${VALKEY_PASSWORD}
      --masterauth ${VALKEY_PASSWORD}
      --appendonly yes
    volumes:
      - valkey-replica-data:/data
    networks: [valkey-net]
    depends_on: [valkey-primary]

  valkey-sentinel:
    image: valkey/valkey:latest
    command: >
      valkey-sentinel /etc/valkey/sentinel.conf
    configs:
      - source: sentinel-conf
        target: /etc/valkey/sentinel.conf
    networks: [valkey-net]
    depends_on: [valkey-primary, valkey-replica]

volumes:
  valkey-primary-data:
  valkey-replica-data:

networks:
  valkey-net:

configs:
  sentinel-conf:
    content: |
      sentinel monitor mymaster valkey-primary 6379 1
      sentinel auth-pass mymaster ${VALKEY_PASSWORD}
      sentinel down-after-milliseconds mymaster 5000
      sentinel failover-timeout mymaster 30000

Client Library Compatibility

Every Redis client works with Valkey by changing the hostname only:

LibraryLanguageChange Required
redis-pyPythonRedis(host="valkey-host")
ioredisNode.jsnew Redis({ host: "valkey-host" })
JedisJavanew JedisPool("valkey-host", 6379)
go-redisGoAddr: "valkey-host:6379"
StackExchange.Redis.NET"valkey-host:6379"
lettuceJavaRedisURI.create("valkey://valkey-host")

Valkey vs Redis vs Alternatives

FeatureValkeyRedis OSSRedis EnterpriseKeyDBDragonflyGarnet
LicenseBSD 3-ClauseSSPL/RSALProprietaryBSDBSL 1.1MIT
GovernanceLinux FoundationRedis LtdRedis LtdSnap IncDragonfly DBMicrosoft
Redis compatFull (7.2)NativeFullFullHighHigh
ClusterYesYesYesYesYesYes
ModulesCommunityStackStack + extrasLimitedLimitedLimited
RDMAYes (v8+)NoPartialNoNoNo
CostFreeFreePaidFreeFree (core)Free

Performance Benchmarking

# Basic benchmark — 100k requests, 50 parallel clients
valkey-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 50

# Pipeline mode (10 commands per pipeline)
valkey-benchmark -n 1000000 -P 10

# Test only SET/GET
valkey-benchmark -t set,get -n 500000

Valkey matches or slightly exceeds Redis 7.2 throughput on equivalent hardware, with improvements in cluster mode due to per-slot dicts.


Monitoring

# Real-time stats
valkey-cli --stat

# Full INFO output sections
valkey-cli INFO all
valkey-cli INFO replication   # replica lag
valkey-cli INFO memory        # used_memory_human, fragmentation ratio
valkey-cli INFO keyspace      # per-db key counts

The community-maintained oliver006/redis_exporter Prometheus exporter works with Valkey unchanged — it detects server info via INFO command. Import the Redis / Valkey Grafana dashboard (ID 763) for instant visibility.


Summary

  • Valkey is the BSD-licensed, Linux Foundation-governed fork of Redis 7.2 — drop-in compatible.
  • Migration is straightforward: stop Redis, point Valkey at the existing data directory, start Valkey.
  • All Redis clients connect to Valkey without code changes — only the hostname changes.
  • Cluster and Sentinel use identical configuration and tooling to Redis.
  • New features in Valkey 8+ (RDMA, per-slot dict, dual-channel replication) improve performance beyond Redis 7.2.
  • Modules: community alternatives exist; proprietary Redis Stack modules do not ship with Valkey.