Limits and gotchas: migrate from Memcached to KiviDB

the copy runs, are not copied. For a cache that is usually fine.

  • Client flags are not copied; see above.
  • Items written after the dump, and items that expire or are evicted while the copy runs, are not copied. For a cache that is usually fine.
  • -X (--disable-dumping) turns off lru_crawler metadump. Without it there is no way to list the keys; warm the cache instead.
  • Metadump line endings. Item lines end in \n, and only END ends in \r\n. A reader that waits for \r\n after each line hangs.
  • Large items. The copy reads each item whole. Values near Memcached's 1 MB default are fine; with -I set much higher, lower BATCH.
  • Slab-class LRU. Memcached evicts within a slab class; KiviDB's allkeys-lru evicts across all keys. What gets evicted under pressure can differ.
  • noreply. Memcached clients can skip replies to save round trips. Redis clients get the same effect from pipelining.
  • UDP. KiviDB has no UDP protocol; clients that read from Memcached over UDP move to TCP.
  • flush_all with a delay has no equivalent; FLUSHDB and FLUSHALL run at once.