将Redis的内容导入到MySQL的方法,即使是我也能理解

我是俺。
Redis 是一种常用的 CacheStorage,但有时我们可能会遇到想要检查它内容的人生阶段。

如果边挖鼻孔边按键,虽然能更快地处理,但是Redis不是很强大的,可能会发出一些声音;
如果仅仅依靠RedisCommand很别扭的话,你可以将数据放入关系型数据库系统,会更顺利些。

如果等一下,假设我是Athena专家的话…

使用连接器可能更方便。您可以参考以下链接,了解如何在AWS Athena中使用Redis连接器:https://docs.aws.amazon.com/zh_cn/athena/latest/ug/athena-prebuilt-data-connectors-redis.html

适合我这样想要摆脱人生枷锁的人。

Redis 是一种开源的内存数据结构存储系统,可以用作数据库、缓存和消息代理等多种用途。

获取密钥清单

为了不想让自己负荷过重而选择了前一种方法。

    • ElatiCache RedisならSnapshotから複製して実行する

 

    ReadEndpointをアプリケーション側で参照してないならReadEndpointに実行でもいいかも
$ redis-cli -c -h hogefugare-dis.com --scan > keysfile

获取已在键中注册的Type

    typeごとにMySQLに作るテーブル列を洗い出します
$ redis-cli -c -h hogefugare-dis.com
redis-cli> type <キー一覧取得で取得したキーいくつか指定>

通过Redis通过键来提取值。

    • keyのtypeがhashだったときの例です。

 

    • datetime型のvalueが含まれている場合はMySQLへ楽にLoadできるように取り出すタイミングで加工するのが楽ちんかと

 

    • redis-cliは –csv オプションを使うとCSV形式で取得できるのが超よいですね

 

    • hgetallだとtypeとvalue両方出力されるのでhmgetでtype指定で抜きだします。hgetallの結果を加工してvalueだけのcsvファイルを作るもアリだとおもいます

 

    1行ずつvalueを抽出するのは本当に遅いので並列実行がおすすめ
REDIS_HOST=hogefugare-dis.com
cat keysfile|  while read KEY
do
    result=$(redis-cli -c -h ${REDIS_HOST} --csv  hmget ${KEY}  hoge fuga ..取得したいtypeを並べるのです..)
    echo "$result"
done > keydata.csv

MySQL

MySQL是一种关系型数据库管理系统,常用于Web应用程序的数据管理和存储。

创建表和加载数据

    typeにあわせてRDB側にテーブル作ります
CREATE TABLE hogehoge (
    hoge int(11),
    fuga varchar(768),
    bar json
)
    データロード
LOAD DATA LOCAL INFILE 'keydata.csv' INTO TABLE hogehoge FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

在数据加载之后,你可以烤也可以煮,随你喜欢,尽情享受吧。

bannerAds