Limits and gotchas: migrate from KeyDB to KiviDB
or sorted-set member is dropped by every method: the member arrives without an expiry and stays. Re-apply it after the move (HEXPIRE for hash fields), or…
What does not come across
- Subkey expiry. Expiry set with
EXPIREMEMBERon a set member, hash field or sorted-set member is dropped by every method: the member arrives without an expiry and stays. Re-apply it after the move (HEXPIREfor hash fields), or clean those members up in the application. - Active replication and multi-master. KiviDB has one writable primary per shard.
- FLASH. KiviDB keeps the dataset in memory.
KEYDB.*commands andKEYDB.CRONjobs. Run scheduled work outside the database.- Module data and search indexes, as for Redis.
Gotchas
MIGRATE, RedisShakescan_readerand RIOT without--structall fail withERR Bad data format: KeyDB'sDUMPpayloads carry anmvcc-tstampfield that Redis's don't.- Replicating from an active replica looks healthy (
master_link_status:up) while every write after the full sync is refused. Check KiviDB's log forRREPLAY, and run the verify script after writing a test key. - RedisShake
sync_readerfrom KeyDB needs Lua on the target. - Tested with KeyDB 6.3.4: replication, RDB file,
--preload-file, RedisShakesync_readerinto thefullbuild and RIOT--struct, with every core data type, TTLs, streams with consumer groups, and a second logical database.