Redis Removed in RHEL 10: Migrate to Valkey

Deepak Prasad
Tested on Target: Red Hat Enterprise Linux 10.2 (Coughlan)
Source: Redis OSS 6.2.19 (RHEL 9 also ships Redis 6.2)
Package valkey-8.0.11-1.el10_2.x86_64
Applies to RHEL 10 (Valkey); source Redis OSS ≤ 7.2 / typical RHEL 9 redis
Privilege sudo or root for package and service changes
Scope Why redis is missing on RHEL 10, install Valkey, transfer a Redis-generated RDB, load it with AOF disabled on first start, and verify migrated keys. Does not cover Redis Cluster, Redis Enterprise, or Redis Stack modules.
Related guides Install Redis on Rocky Linux 9
Install Redis on Ubuntu
Short on time?Beta Get the gist of this 10-minute read in seconds, then ask follow-up questions

RHEL 10 no longer ships redis, redis-devel, or redis-doc. Red Hat’s supported replacement is Valkey, which speaks the same RESP protocol on port 6379 and can load Redis-compatible RDB and AOF files from open-source Redis through 7.2.

This walkthrough moves a real Redis-generated dump.rdb onto RHEL 10 Valkey: create keys on Redis OSS 6.2 (the lineage RHEL 9 packages use), run SAVE, copy the file, disable AOF for the first Valkey start, then read the same keys back with valkey-cli.


RHEL 10 Redis Replacement: Quick Answer

Try the old package name first with dnf so you see the exact failure:

bash
sudo dnf install redis
output
Updating Subscription Management repositories.
Last metadata expiration check: 0:16:46 ago on Tue 22 Sep 2026 07:35:06 AM IST.
No match for argument: redis
Error: Unable to find a match: redis

That No match line is the RHEL 10 signal: the redis package name is gone. Install Valkey instead:

bash
sudo dnf install valkey
output
Installed:
  valkey-8.0.11-1.el10_2.x86_64

The NEVRA confirms Valkey landed from AppStream. Enable and start the service with systemctl:

bash
sudo systemctl enable --now valkey

Confirm the server answers:

bash
valkey-cli ping
output
PONG

PONG means Valkey is listening. For an existing Redis workload, keep reading: the dump transfer and first-start AOF rule matter more than the empty install.


Why Is Redis Missing from RHEL 10?

Confirm the RPM is gone. The rpm command covers other query flags if you need a wider package check:

bash
rpm -q redis
output
package redis is not installed

Red Hat removed Redis from RHEL 10 and documents Valkey as the replacement in the RHEL 10 adoption considerations. The Valkey project is a Linux Foundation fork of open-source Redis 7.2.4 and remains BSD-licensed.


Redis vs Valkey on RHEL

Item Redis (RHEL 9) Valkey (RHEL 10)
Package redis valkey
Server binary redis-server valkey-server
CLI redis-cli valkey-cli
systemd unit redis.service valkey.service
Config /etc/redis/redis.conf /etc/valkey/valkey.conf
Data directory /var/lib/redis /var/lib/valkey
Default port 6379 6379

Most Redis protocol clients keep working against Valkey for common commands. Package names, binaries, systemd units, and filesystem paths still change, and Redis modules or Redis Stack features need a separate check.

On RHEL 10.2, valkey-compat-redis was not available in the AppStream repositories I queried. Plan a manual dump and config migration.


Check the Source Redis Version

On the host that still runs Redis (RHEL 9, Rocky Linux 9, or another Redis OSS ≤ 7.2 system), record the version before you migrate:

bash
redis-server --version
output
Redis server v=6.2.19 sha=00000000:0 malloc=libc bits=64 build=ec31ec6ed9f24e2a

You can also read it from a live instance:

bash
redis-cli INFO server | grep redis_version
output
redis_version:6.2.19

6.2.x sits inside Valkey’s supported RDB range (Redis OSS 2.x through 7.2.x). Redis Community Edition 7.4 and later dumps are not compatible. Upstream documents the matrix in the Valkey migration guide.

If the workload uses Redis Stack or extra modules, verify those separately. Core RESP and RDB compatibility does not mean every module has a Valkey equivalent.


Create Fixture Data on Redis Before Migration

Stop application writes (or accept a short freeze). Load a small fixture on the Redis host so you can prove the same keys after Valkey starts. Store a string:

bash
redis-cli SET glc:string "hello-redis"

SET returns OK. Add a hash:

bash
redis-cli HSET glc:hash field1 value1 field2 value2

HSET returns the number of fields added. Clear any old list key:

bash
redis-cli DEL glc:list

DEL returns how many keys were removed. Push three list elements:

bash
redis-cli LPUSH glc:list a b c

LPUSH returns the list length. Add a set:

bash
redis-cli SADD glc:set x y z

SADD returns how many members were added. Store a key with a one-hour TTL:

bash
redis-cli SET glc:ttl expires EX 3600

SET returns OK. Capture the baseline before the dump:

bash
redis-cli DBSIZE
output
5

Five keys are present. Read the string:

bash
redis-cli GET glc:string
output
hello-redis

Confirm the hash:

bash
redis-cli HGETALL glc:hash
output
field1
value1
field2
value2

Read the list:

bash
redis-cli LRANGE glc:list 0 -1
output
c
b
a

Read the set:

bash
redis-cli SMEMBERS glc:set
output
x
y
z

The order of SMEMBERS output is not guaranteed; verify that the same members are present rather than expecting the same order.

Check the TTL:

bash
redis-cli TTL glc:ttl
output
3600

You will re-run the same reads on Valkey after the cutover. Do not create this fixture only on Valkey after migration; that would not prove the RDB load.


Save the Redis Dump with SAVE

Find the real snapshot path before you save. Do not assume /var/lib/redis/dump.rdb without checking:

bash
redis-cli CONFIG GET dir
output
dir
/var/lib/redis

Next ask for the dump filename:

bash
redis-cli CONFIG GET dbfilename
output
dbfilename
dump.rdb

On this test host, Redis reported /var/lib/redis and dump.rdb, so the snapshot path is /var/lib/redis/dump.rdb.

BGSAVE is asynchronous. For a planned migration where writes are already stopped, use synchronous SAVE so the file on disk is complete before you copy it:

bash
redis-cli SAVE
output
OK

OK means the snapshot finished. Confirm that file:

bash
ls -l /var/lib/redis/dump.rdb
output
-rw-r--r--. 1 root root 246 Sep 22 07:51 /var/lib/redis/dump.rdb

Also keep a copy of /etc/redis/redis.conf for reference. Stop Redis before Valkey takes port 6379 on the target, or keep Redis running until after the file is copied if Redis and Valkey are on different hosts.

bash
sudo systemctl stop redis

Transfer the Dump to RHEL 10

From the Redis host, copy the dump to the RHEL 10 system. Example with scp (replace the user and hostname):

bash
scp /var/lib/redis/dump.rdb admin@rhel10.example:/tmp/dump.rdb

On the RHEL 10 host, confirm the file arrived:

bash
ls -l /tmp/dump.rdb
output
-rw-r--r--. 1 admin admin 246 Sep 22 07:51 /tmp/dump.rdb

Install Valkey on RHEL 10

If Valkey is not already present:

bash
sudo dnf install -y valkey

Enable the unit but do not start it yet if you are about to place a dump (or stop it if it is already running):

bash
sudo systemctl stop valkey

An empty data directory avoids mixing an old Valkey dump with the Redis file you are about to install.


Migrate Configuration Without Overwriting valkey.conf

Do not replace /etc/valkey/valkey.conf with the old Redis file. Start from the packaged Valkey configuration and copy across only settings you intentionally customized, such as:

  • requirepass / ACL users
  • maxmemory and eviction policy
  • bind and TLS listeners
  • persistence (save, and appendonly only after the first RDB load)
  • a custom dir or dbfilename if you use non-default paths

Valkey understands Redis OSS 7.2-style options for many settings, but distro paths and defaults still belong in the Valkey package file.

Disable AOF for the First RDB Load

If AOF is enabled on first start, Valkey may not import the copied RDB the way you expect. The Valkey migration guide calls this out explicitly.

Check the packaged setting:

bash
grep -E '^[[:space:]]*appendonly' /etc/valkey/valkey.conf
output
appendonly no

For the initial import, leave (or set) appendonly no. After the migrated dataset is verified, re-enable AOF using Valkey's documented AOF-enable procedure if your deployment requires it; do not simply flip the setting and restart without verifying the AOF rewrite completed.


Install the Redis Dump into Valkey

Confirm where the packaged Valkey service stores its dump. With the unit stopped or before the first load, read the config, or after a successful start use valkey-cli:

bash
grep -E '^[[:space:]]*(dir|dbfilename)' /etc/valkey/valkey.conf
output
dbfilename dump.rdb
dir ./

The packaged unit sets WorkingDirectory=/var/lib/valkey, so dir ./ resolves to /var/lib/valkey. A running instance reports the absolute path:

text
dir
/var/lib/valkey
dbfilename
dump.rdb

Place the Redis dump at that path with the correct owner and mode:

bash
sudo install -o valkey -g valkey -m 660 /tmp/dump.rdb /var/lib/valkey/dump.rdb

Restore the SELinux label on RHEL. File contexts and restorecon are covered in SELinux modes and file contexts:

bash
sudo restorecon -v /var/lib/valkey/dump.rdb

If the label was already correct, restorecon may print nothing. If ownership is wrong, fix it with the chown command before you relabel. Confirm ownership and context:

bash
ls -laZ /var/lib/valkey/dump.rdb
output
-rw-rw----. 1 valkey valkey system_u:object_r:redis_var_lib_t:s0 246 Sep 22 07:51 /var/lib/valkey/dump.rdb

Start Valkey:

bash
sudo systemctl start valkey

Confirm the unit is active:

bash
systemctl is-active valkey
output
active

active means Valkey started successfully. The key checks in the next section confirm whether the Redis dump actually loaded. If the unit fails, check the journalctl unit log for RDB version errors before continuing.


Verify Migrated Redis Data on Valkey

These reads must match the Redis baseline. Do not recreate the fixture on Valkey first.

bash
valkey-cli DBSIZE
output
5

Five keys means the Redis dump loaded. Read the string:

bash
valkey-cli GET glc:string
output
hello-redis

The string matches the Redis baseline. Confirm the hash:

bash
valkey-cli HGETALL glc:hash
output
field1
value1
field2
value2

Both hash fields came across. Read the list:

bash
valkey-cli LRANGE glc:list 0 -1
output
c
b
a

The list order matches Redis (LPUSH newest first). Read the set:

bash
valkey-cli SMEMBERS glc:set
output
x
y
z

The order of SMEMBERS output is not guaranteed; confirm the same members exist rather than matching line order. All three set members are present. Check the TTL:

bash
valkey-cli TTL glc:ttl
output
3505

A still-positive TTL means the expiry survived the load (the number counts down from 3600).

INFO server still reports a Redis-compatible version string alongside Valkey:

bash
valkey-cli INFO server | head -8
output
# Server
redis_version:7.2.4
server_name:valkey
valkey_version:8.0.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ce3013a3028d2f88
server_mode:standalone

Read server_name:valkey and valkey_version for the product identity. The redis_version field is a compatibility string, not proof that Redis RPMs are installed.


Test Clients and Application Smoke Checks

Applications that already speak Redis on 127.0.0.1:6379 usually need only a restart after Valkey is listening. From a host that still has redis-cli:

bash
redis-cli -h 127.0.0.1 -p 6379 ping

Expect PONG. On RHEL 10 the Redis CLI package is gone, so use valkey-cli for local checks. Library clients (hiredis, redis-py, go-redis, and similar) continue to use the Redis protocol for common commands.

Point or restart the application against Valkey and confirm one critical read/write path before you retire the Redis host or backups.


Update Service and Application References

Old reference New reference
redis.service valkey.service
redis-server valkey-server
redis-cli valkey-cli
/etc/redis/redis.conf /etc/valkey/valkey.conf
/var/lib/redis /var/lib/valkey
package redis package valkey

Port 6379 stays the same unless you changed it. Update monitoring that looks for the redis unit or process name.


Common Migration Problems

Symptom Likely cause Fix
dnf install redis → No match Package removed on RHEL 10 Install valkey
Valkey starts empty after copying dump.rdb AOF enabled on first start, or wrong dir/dbfilename Set appendonly no, place dump under /var/lib/valkey/dump.rdb, restart
Valkey fails on start after copying dump.rdb RDB from Redis 7.4+ or corrupt dump Check the unit journal; use ≤7.2 dump or logical reseed
Permission or SELinux denial under /var/lib/valkey Wrong owner or label chown valkey:valkey and restorecon on the dump
App still looks for redis.service Unit name not updated Point systemd and scripts at valkey.service

Summary

RHEL 10 does not provide Redis RPMs. Install Valkey from AppStream, keep the packaged valkey.conf, and migrate only the settings you customized. For Redis OSS dumps through 7.2, stop writes, run SAVE, copy dump.rdb to the RHEL 10 host, install it under /var/lib/valkey with the valkey owner, run restorecon, leave appendonly no for the first start, then verify the keys that existed on Redis.

Treat Redis 7.4+ dumps as incompatible. Modules and Redis Stack features need their own plan. For Ubuntu hosts that still package Redis 8 beside Valkey 9, use Migrate Redis to Valkey on Ubuntu instead of this RHEL package-replacement path.


References


Frequently Asked Questions

Can I install Redis on RHEL 10?

Not from supported RHEL 10 repositories. dnf install redis returns no match. Install Valkey instead.

Is Valkey a drop-in replacement for Redis?

For Redis OSS 7.2 and earlier, Valkey keeps strong protocol, configuration, and persistence compatibility, but the RHEL package, binaries, service names, paths, and some ecosystem modules differ.

Where is the Valkey config file on RHEL 10?

/etc/valkey/valkey.conf. Data defaults to /var/lib/valkey. Do not overwrite that file wholesale with redis.conf.

Will my Redis clients keep working?

Most Redis protocol clients continue to work against Valkey on port 6379 for common commands. Retest authentication, TLS, and any module-specific features you relied on.

What about redis-devel and redis-doc?

Those packages were removed with Redis on RHEL 10. Use Valkey and its documentation instead.

Finished reading?Beta Get the key takeaways in seconds, then ask follow-up questions
Omer Cakmak

Linux Administrator

Highly skilled at managing Debian, Ubuntu, CentOS, Oracle Linux, and Red Hat servers. Proficient in bash scripting, Ansible, and AWX central server management, he handles server operations on OpenStack, KVM, Proxmox, and VMware.

  • Debian
  • Ubuntu
  • Linux
  • Red Hat Enterprise Linux
  • Shell Script
  • System Administration