Limits and gotchas: migrate from Amazon ElastiCache to KiviDB
(ERR key must be valid UTF-8), and RIOT stops at the first one. Before the copy, look for binary key names: redis-cli --scan | python3 -c "import sys…
- Key names must be valid UTF-8. KiviDB refuses a key whose name is not
(
ERR key must be valid UTF-8), and RIOT stops at the first one. Before the copy, look for binary key names:redis-cli --scan | python3 -c "import sys; [print(l, end='') for l in sys.stdin.buffer if not l.decode('utf-8','ignore').encode()==l]" | head(use--tls,--userand--passas for your source). Rename them in the source first. - Valkey 9.0 and later. Neither the backup file nor
DUMPpayloads load into KiviDB 1.2.0; use RIOT--struct, which leaves stream consumer groups and hash field TTLs behind. - Writes after the backup. An exported backup is a point-in-time copy.
- Keyspace notifications miss
FLUSHALLandFLUSHDB. Don't run them on the source during aksncopy. - Serverless cannot follow changes (no
PSUBSCRIBE): freeze writes for the copy, or rebuild the cache in KiviDB. - Data tiering clusters cannot export a backup: copy over commands.
- IAM users have no KiviDB equivalent; give the application a password.
- Global Datastore and MemoryDB Multi-Region do not come across; copy from the primary region.
- Index definitions for vector search are not in the backup; run
FT.CREATEagain, and it indexes the keys already there. - RedisShake does not check the server's TLS certificate: the traffic is encrypted, but it does not verify who it talks to. Run it inside your VPC.
- ElastiCache sets
notify-keyspace-eventsonly through a parameter group. Remember to set it back afterwards. - Lua. If the application uses
EVAL,EVALSHAorFUNCTION, KiviDB needs Lua (theluaorfullbuild, or Lua scripting on in KiviDB Cloud). The default build answers those commands with an error.