Open1

Upstash Redisから普通のRedisへの移行

kaiinuikaiinui

問題

Upstash Redisはダンプに必要なコマンドが無効化されている

通常、下記のようなコマンドを使ってダンプを取得することができるが、Upstash Redisにおいては無効化されている。

redis-cli -h HOST -p PORT --rdb dump.rdb

KEYSコマンドが無効化されているので、単純なスクリプトで移行できない

次のようなスクリプトは動かない。

const keys = await clientA.keys('*');

for (const key of keys) {
const value = await clientA.get(key);
if (value !== null) {
  await clientB.set(key, value);
}
}

解決法

公式でupstash-redis-dumpというツールが配布されているので、これを使ってダンプを取得する。

upstash-redis-dump -db 0 -host YOUR_UPSTASH_SUBDOMAIN.upstash.io -port 6379 -pass PASSWORD -tls > redis.dump

なお、ダンプは秒間1kキー程度の速度で進むので、大量にキーがある場合は注意。

https://github.com/upstash/upstash-redis-dump

(refer: https://upstash.com/docs/redis/howto/importexport)