// OSSeva Blog
MigrationRedis 7 to 8 Upgrade: The Path From 6.2 and 7.x, Data File Compatibility and the Valkey Option
The short answer
Redis's upgrade guide lists two supported paths to Redis 8: Redis Open Source 7.x, with or without modules, and Redis Stack 7.2 or 7.4. Both work by replication or by restarting on the existing RDB or AOF files. A 6.2 server is not on that list, so it moves to 7.2 or 7.4 first and then to 8.
Two things make each step harder to reverse than it looks. Redis reads RDB files from older versions but refuses files newer than its own format, and each of 7.0, 7.2 and 7.4 introduced a new format version. And the licence changes as you go: Redis 7.2 and earlier are BSD-3-Clause, 7.4 is RSALv2 or SSPLv1, and Redis 8 adds AGPLv3 as a third option. If staying on a BSD licence matters, the alternative route is Valkey, and it has to be taken from 7.2 or earlier.
Upgrade paths
| From | To | Supported? | Rollback by data file |
|---|---|---|---|
| 6.2 | 7.0, 7.2 or 7.4 | Yes. Redis 7 converts older encodings when loading an older RDB or replicating from an older primary | No. 6.2 reads RDB version 9; 7.0 writes 10, 7.2 writes 11, 7.4 writes 12 |
| 6.2 | 8.x | Not in the upgrade guide, which names 7.x. Go through 7.2 or 7.4 | No |
| 7.0, 7.2 or 7.4 | 8.x | Yes, by replication or persistence | From 7.2 or earlier, no: 8.0 writes RDB version 12 |
| Redis Stack 7.2 or 7.4 | 8.x | Yes. The modules are now part of Redis | As above |
| 7.4 | 8.0, 8.2 or 8.4 | Yes | All write RDB version 12. Test a restore on 7.4 before counting on it |
| Any | 8.6 or later | Yes, from 7.x | No. 8.6 writes RDB 13, 8.8 writes 14, 8.10 writes 15 |
| Redis 7.2 or earlier | Valkey 7.2, 8.1 or 9.x | Yes, same protocol and data file formats | Back to Redis 7.2 from Valkey 7.2 or 8.x |
| Redis 7.4 or 8.x | Valkey | Not by replication or data files |
Pick the target with the lifecycle in mind. On Redis's version management page, 8.2 is an extended release supported until 1 September 2030, 8.0 is a standard release that reaches end of life on 1 December 2026, and 8.4 to 8.10 are standard releases. 7.2 and 7.4 are extended releases to 1 December 2029, and 6.2 is extended to 1 April 2027. 7.0 is no longer on the list. See Redis end-of-life dates and Redis 6.2 end of life.
Pre-upgrade checklist
# Version, mode and persistence
redis-cli INFO server | grep -E "redis_version|redis_mode"
redis-cli INFO persistence | grep -E "aof_enabled|rdb_last_bgsave_status"
redis-cli CONFIG GET dir
redis-cli CONFIG GET appendonly
# Modules, ACL users and topology
redis-cli MODULE LIST
redis-cli ACL LIST
redis-cli INFO replication
redis-cli CLUSTER INFO # cluster mode only
# A snapshot, then a copy of the data directory
redis-cli SAVE
cp -r /var/lib/redis /var/backups/redis-pre-upgrade
Also list the client libraries in use, any tooling that calls MODULE, DEBUG or SCRIPT commands, and any backup job that copies AOF files by name.
Step 1: 6.2 to 7.x, and how to detect each change
Redis 7.0 carried most of the breaking changes in this path. The ones that catch real deployments:
- AOF moves into a directory. Redis 7 stores the AOF as a base file, incremental files and a manifest inside the directory named by
appenddirname,appendonlydirby default. On first start it migrates an old single AOF file into that directory. Detect: backup, restore and monitoring scripts that referenceappendonly.aofdirectly. - Pub/sub channels are closed to ACL users by default.
acl-pubsub-defaultbecameresetchannels, so an ACL user without explicit channel permissions can no longer publish or subscribe. Detect: users inACL LISTthat use pub/sub and have no&channel rule. Grant the channels, or setacl-pubsub-default allchannelsto keep the old behaviour. - MODULE and DEBUG are disabled by default, along with changes to protected configurations, through
enable-module-command,enable-debug-commandandenable-protected-configs. Detect: tooling that loads modules at runtime or callsDEBUG. - Setting
bindno longer turns off protected mode. Detect: servers with a non-defaultbindand no password that clients reach from other hosts. - Duplicate ACL users are an error at startup, instead of the last declaration winning. Detect: repeated
userlines across the ACL file and command-line arguments. - Scripts and commands.
SCRIPT LOADandSCRIPT FLUSHare no longer propagated to replicas or the AOF, so code that loads a script on the primary and callsEVALSHAafter a failover must handleNOSCRIPT.STRALGOwas removed in favour ofLCS. Snapshot and other admin commands insideMULTIare rejected. Detect: search application code forEVALSHA,STRALGOand transactions that includeSAVEorBGSAVE. - Diskless replication is the default (
repl-diskless-sync yes). Detect:CONFIG GET repl-diskless-syncand a review of replica sync timing on large datasets.
7.2 changed less: cluster shard IDs no longer appear in CLUSTER NODES output, and a RESP3 client subscribed to the channel it publishes to now gets the PUBLISH reply before the message. Both matter only to tooling that parses that output.
Step 2: 7.x to 8, and how to detect each change
- The licence. Redis 8 is offered under RSALv2, SSPLv1 or AGPLv3, at your choice. Coming from 7.2 or earlier, this is the first time your Redis is not BSD-3-Clause, so it needs a licence review before it needs a change window. Our guide to the Redis licence change goes through each licence.
- The former Redis Stack modules are built in. The Query Engine, JSON, time series, five probabilistic structures and the vector set (in beta) are part of Redis 8, and separately loaded RediSearch, RedisJSON, RedisTimeSeries and RedisBloom are no longer needed. A
redis-full.conffile loads Redis with all of them. Detect:loadmodulelines in the configuration and the output ofMODULE LIST. - ACL categories widen. Redis 8 adds categories such as
@search,@jsonand@timeseries, and the module commands are also placed in the existing categories like@readand@write. A user granted+@readtherefore gains read commands for the new data types. Detect:ACL LISTentries that grant by category, and decide whether that is acceptable. - Clustered search waits for every primary. Redis notes that search will not be fully operational until all primary shards are upgraded; queries during the upgrade return errors or a "Waiting for all nodes to connect" message.
- Command changes.
GETRANGEreturns an empty bulk when a negative end index is out of range, andSCANwith a type filter was changed. Detect: search forGETRANGEwith negative indexes. - Newer data file formats. 8.6 and later write a new RDB version with each feature release, which matters for rollback (below).
The procedure
Standalone server, following Redis's guide: run SAVE, copy the data directory, stop Redis, install the new version, start it and confirm:
redis-cli INFO server | grep redis_version
redis-cli INFO persistence
Primary with replicas or Sentinel: upgrade each replica first and let it resynchronise, then promote an upgraded replica and upgrade the old primary last.
# After every replica runs the new version
redis-cli -p 26379 SENTINEL FAILOVER mymaster
redis-cli -h old-primary INFO replication # now a replica; upgrade it
Cluster: snapshot every node with redis-cli -p <port> SAVE, upgrade one node at a time starting with the replicas, then on an upgraded replica run CLUSTER FAILOVER so it takes over its primary's slots before the primary is restarted. Check the cluster after each node:
redis-cli -p <port> INFO server | grep redis_version
redis-cli -p <port> CLUSTER INFO
redis-cli --cluster check <host>:<port>
Rollback limits
Redis loads an RDB file only if its format version is no newer than its own. After 7.x or 8 has written a snapshot, an older server cannot load it, and the AOF base file can itself be an RDB. In practice:
- Keep the pre-upgrade copy of the data directory. Restoring it on the old version is the rollback, and it loses the writes made since.
- For a cache, rebuilding from the system of record may be simpler than any restore.
- 7.4 to 8.0, 8.2 or 8.4 keep RDB version 12, so 7.4 may load a file written by those versions. Keys that use data types added in Redis 8 are the risk, so prove it in staging first.
- Do not plan to roll back from 8.6 or later by data file at all.
The alternative: Valkey instead of Redis 8
Valkey is the Linux Foundation fork of Redis 7.2.4 under BSD-3-Clause. Its migration guide says Valkey 7.2 and later use a compatible protocol, configuration and RDB and AOF formats with Redis OSS 2.x to 7.2.x, and that data files from Redis 7.4 and later are not compatible. That makes the order of decisions matter: a 6.2, 7.0 or 7.2 estate can move to Valkey by replication, but once it has moved to 7.4 or 8, the only way to Valkey is a key-level copy. Valkey 9.1.2, 8.1.10 and 7.2.14 all shipped on 1 September 2026. The cutover, including why to land on Valkey 8.1 before 9.x, is in migrate Redis to Valkey, and the trade-offs are in Valkey vs Redis.
Redis 8 is the better fit if you want the built-in Query Engine, JSON and vector sets, if AGPLv3 or RSALv2 is acceptable, or if you want a commercial agreement with Redis Ltd. Valkey is the better fit if you need a BSD licence and use Redis as a cache, session store or queue.
Where OSSeva fits
OSSeva for Redis backports security fixes into Redis 6.2.x and 7.0.x under the original BSD licence and supports Redis 7.2.x, Valkey 7.2.x and Valkey 8.x, so one subscription covers the version you run now, the time spent on the path above, and a Valkey destination if you take that route. OSSeva Assure adds an ACL and authentication audit, a persistence configuration review for RDB and AOF, and a Redis Cluster topology review; OSSeva Operate adds 24/7 monitoring, replication lag alerting and a 15-minute P1 response. Pricing is per instance cluster; book a discovery call for a quote. OSSeva's Redis coverage stops at 7.2, so if you are moving to 7.4 or 8 for the Query Engine or the modules, Redis Ltd is the better source of support for that destination.
Frequently asked questions
Can I upgrade Redis 6.2 directly to Redis 8?
Redis's upgrade guide names Redis 7.x as the starting point for Redis 8, so take 6.2 to 7.2 or 7.4 first, then to 8.
Can Redis 7 load an RDB file from Redis 8?
Redis 7.2 and earlier cannot, because Redis 8 writes a newer RDB format. Redis 7.4 uses the same format version as 8.0 to 8.4, so it may load those files if they hold no data types it lacks; test it first.
Is Redis 8 open source?
Redis 8 is offered under a choice of RSALv2, SSPLv1 or AGPLv3, and AGPLv3 is an OSI-approved open source licence. Redis 7.4 is RSALv2 or SSPLv1 only, and 7.2 and earlier are BSD-3-Clause.
Do I still need RediSearch and RedisJSON modules with Redis 8?
No. The Query Engine, JSON, time series and probabilistic data structures are part of Redis 8. Remove separate loadmodule lines for them during the upgrade.
What happens to my AOF file when upgrading from Redis 6.2 to 7?
Redis 7 moves it into the AOF directory, appendonlydir by default, and from then on writes a base file, incremental files and a manifest. Update any script that copies appendonly.aof by name.
Should I upgrade to Redis 8 or move to Valkey?
If you are on Redis 7.2 or earlier and want to stay on a BSD licence, move to Valkey before upgrading Redis, because Redis 7.4 and 8 data files cannot be loaded by Valkey. If you need Redis 8's built-in modules, upgrade to Redis 8.2, the current extended release.
Tags
Related articles
Kafka vs Redis: Streams, Pub/Sub, Queues and When to Use Each
October 8, 2026MigrationMongoDB vs MySQL vs PostgreSQL: Data Model, Transactions, Scaling, Licensing and Which to Choose
October 8, 2026MigrationPostgreSQL vs Aurora PostgreSQL vs RDS: Architecture, Billing, Version Support and When to Self-Manage
October 8, 2026Ready to get your open source under control?
Talk to an OSSeva engineer about CVE coverage, compliance, and migration support for your stack.