Valkey (LA)
CLI and Terraform supportCLI and Terraform support for Valkey is currently unavailable. We're working on enabling it for GA.
Connect to a Valkey Managed Database
To connect to a Valkey Managed Database, you need to know your connection details.
To view connection details:
-
Log in to Cloud Manager
-
From the main menu, select Databases.
-
Select the Managed Database cluster of interest from the list.
The Connection Details section contains information and credentials needed to connect to your database.
-
Username. The default user for all Valkey Managed Databases is
akmadminwhich replaces the non-accessible root user. -
Password. The randomly generated password for your database cluster.
-
Host. The fully qualified domain name you can use to reach your database cluster through the public network.
IPv6 supportUse the IPv6 address (AAAA record) for this hostname to avoid network transfer charges when connecting to your database from Linodes within the same region.
- Port.
- SSL. This field is set to
ENABLED, which means that it is required to use an encrypted TLS/SSL connection.
-
The TLS server certificate for your Valkey Managed Database is issued from a public certificate authority (CA) Let's Encrypt. Most operating systems include Let's Encrypt in their default trust store, so most popular clients verify this certificate automatically. This means that you shouldn't need to do anything to verify this server certificate. If your client doesn't use system trust by default or excludes Let's Encrypt, follow your client's instructions to trust widely recognized CAs.
Valkey Managed Databases differs from PostgreSQL and MySQL Managed Databases, which use server certificates that a private, account-specific CA issues. You can't use this private CA to verify server certificates for Valkey instances. Use public CAs instead. Always keep certificate verification enabled when you configure clients to connect to Valkey Managed Databases.
Migrate a Redis database to a Valkey Managed Database
To migrate a Redis database to Valkey Managed Database, you need to perform four steps.
- Download RedisShake.
- Prepare the configuration file.
- Execute the migration.
- Run basic validation.
Before you begin:
Check the feature support matrix for RedisShake migration, to make sure the migration is possible.
Download RedisShake
To download RedisShake:
- Download RedisShake for your operating system from the RedisShake official releases page.
- Use the following command to uncompress the package and verify the binary:
tar -xzf redis-shake-linux-amd64.tar.gz
chmod +x redis-shake
./redis-shake --version || ./redis-shake -vPrepare the configuration file
- Use the command to edit the RedisShake configuration file:
vi shake.toml- Use the appropriate reader section based on your source Redis configuration:
- If the source supports
PSYNC / SYNC, use[sync_reader]for continuous replication. - If
PSYNC / SYNCcommands are disabled, comment out the[sync_reader]section and use[scan_reader]instead for a one-time scan-based copy. - Populate the values based on your source settings.
- If the source supports
Sample source config
[sync_reader]
cluster = false # Set to true if the source is a Redis cluster
address = "172.1.1.1:6379" # For clusters, specify the address of any cluster node
username = "default" # Leave empty if ACL is not in use
password = "xxxxxxx" # Leave empty if no authentication is required
tls = true # Set to true if TLS is required
sync_rdb = true # Set to false if RDB synchronization is not required
sync_aof = true # Set to false if AOF synchronization is not required
prefer_replica = false # Set to true to sync from a replica node
try_diskless = false # Set to true for diskless sync if the source has repl-diskless-sync=yesSample target config
[redis_writer]
cluster = false
address = "valkey-1111-akamai-valkey-test.g2a.akamaidb.net:24662"
username = "default" # Leave empty if ACL is not in use
password = "xxxxxxx" # Leave empty if no authentication is required
tls = true
off_reply = false # Set to true to turn off server repliesExecute the migration
- Use the command to run RedisShake using the config file:
./redis-shake shake.tomlExample output
2026-05-27 13:37:09 INF load config from file: shake.toml
2026-05-27 13:37:09 INF log_level: [info], log_file: [/tmp/data/shake.log]
2026-05-27 13:37:09 INF changed work dir. dir=[/tmp/data]
2026-05-27 13:37:09 INF GOMAXPROCS defaults to the value of runtime.NumCPU [12]
2026-05-27 13:37:09 INF not set pprof port
2026-05-27 13:37:09 INF create SyncStandaloneReader
2026-05-27 13:37:09 INF * address: 172.1.1.1:6379
2026-05-27 13:37:09 INF * username: default
2026-05-27 13:37:09 INF * password: *********************************************
2026-05-27 13:37:09 INF * tls: true
2026-05-27 13:37:09 INF create RedisStandaloneWriter
2026-05-27 13:37:09 INF * address: valkey-1111-akamai-valkey-test.g2a.akamaidb.net:24662
2026-05-27 13:37:09 INF * username: default
2026-05-27 13:37:09 INF * password: ************************
2026-05-27 13:37:09 INF * tls: true
2026-05-27 13:37:10 INF start syncing...
2026-05-27 13:37:10 INF set target redis max qps to 300000
2026-05-27 13:37:10 INF [reader_172.1.1.1_6379] source db is not doing bgsave! continue.
2026-05-27 13:37:15 INF read_count=[20], read_ops=[0.00], write_count=[20], write_ops=[0.00], syncing aof, diff=[0]
2026-05-27 13:37:20 INF read_count=[20], read_ops=[4.00], write_count=[20], write_ops=[4.00], syncing aof, diff=[0]
2026-05-27 13:37:25 INF read_count=[20], read_ops=[0.00], write_count=[20], write_ops=[0.00], syncing aof, diff=[0]The following values indicate that RedisShake is caught up:
read_ops=[0.00], write_ops=[0.00], diff=[0]In sync mode, RedisShake will continue running and waiting for new changes. When you are ready to cut over, stop application writes, confirm that RedisShake is caught up, and then terminate it with Ctrl+C or
kill -TERM <redis-shake-pid>
Run basic validation
The validation consists of comparing the keyspace summary on both the source and target.
- On source, run:
redis-cli --tls -h SOURCE_HOST -p SOURCE_PORT -a 'SOURCE_PASSWORD' INFO keyspace- On target, run:
redis-cli --tls -h TARGET_HOST -p TARGET_PORT -a 'TARGET_PASSWORD' INFO keyspace- Compare database sizes:
redis-cli --tls -h SOURCE_HOST -p SOURCE_PORT -a 'SOURCE_PASSWORD' DBSIZE
redis-cli --tls -h TARGET_HOST -p TARGET_PORT -a 'TARGET_PASSWORD' DBSIZE- For a basic final check, sample a few keys and compare their type and TTL on both sides:
redis-cli --tls -h SOURCE_HOST -p SOURCE_PORT -a 'SOURCE_PASSWORD' TYPE keyname
redis-cli --tls -h TARGET_HOST -p TARGET_PORT -a 'TARGET_PASSWORD' TYPE keyname
redis-cli --tls -h SOURCE_HOST -p SOURCE_PORT -a 'SOURCE_PASSWORD' TTL keyname
redis-cli --tls -h TARGET_HOST -p TARGET_PORT -a 'TARGET_PASSWORD' TTL keyname
This provides a basic validation. For exact validation, use a full comparison tool or a custom scan-based validator.
Feature support matrix for RedisShake migration
Common Redis-like databases are generally backward compatible, meaning there are no compatibility issues when migrating from a lower version instance to a higher version.
| Feature | Redis 2.8-7.x | Redis 8.x | Redis 8.4.x | Valkey 8.x | Valkey 9.x |
|---|---|---|---|---|---|
| Basic Data Types | ✓ | ✓ | ✓ | ✓ | ✓ |
| Stream | ✓ (5.0+) | ✓ | ✓ | ✓ | ✓ |
| Module | ✓ (4.0+) | ✓ | ✓ | ✓ | ✓ |
| Function | ✓ (7.0+) | ✓ | ✓ | ✓ | ✓ |
| Hash Field Expiration | ✗ | ✓ | ✓ | ✓ | ✓ |
| XACKDEL/XDELEX | ✗ | ✓ (8.2+) | ✓ | ✓ | ✓ |
| Vector Sets | ✗ | ✗ | ✗ | ✗ | ✗ |
| WAITAOF | ✗ | ✗ | ✓ | ✗ | ✓ |
| COMMANDLOG | ✗ | ✗ | ✗ | ✗ | ✓ |
Updated about 2 hours ago
