将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';
在数据加载之后,你可以烤也可以煮,随你喜欢,尽情享受吧。