uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

Redisでコマンドラインからデータをインポートする

最近、Redisに触ってます。

コマンドラインから初期データ投入する方法が調べてもあまりなかったのでメモ代わりに書いておきます。

redis-cliコマンドからデータを投入してみたいと思います。

まず、投入するデータを用意してimport_data.lstとして保存します。

Redisのコマンドについては下のページを見て下さい。 Command reference – Redis

一応、簡単に説明するとHMSET で summery::sm0000000N をキーにしてハッシュを登録しています。

HMSET summery::sm00000001 comment 11 play 30 tag cokking mylist 48 id sm00000001 
HMSET summery::sm00000002 comment 12 play 60 tag ent mylist 20 id sm00000002 
HMSET summery::sm00000003 comment 13 play 18 tag cooking mylist 32 id sm00000003 
HMSET summery::sm00000004 comment 14 play 79 tag ent mylist 68 id sm00000004 
HMSET summery::sm00000005 comment 15 play 49 tag ent mylist 45 id sm00000005 
HMSET summery::sm00000006 comment 16 play 27 tag animal mylist 46 id sm00000006 
HMSET summery::sm00000007 comment 17 play 79 tag sing mylist 33 id sm00000007 
HMSET summery::sm00000008 comment 18 play 84 tag drive mylist 11 id sm00000008 
HMSET summery::sm00000009 comment 19 play 22 tag ent mylist 15 id sm00000009 
HMSET summery::sm00000010 comment 20 play 68 tag drive mylist 16 id sm00000010 
HMSET summery::sm00000011 comment 21 play 62 tag drive mylist 48 id sm00000011 
HMSET summery::sm00000012 comment 22 play 96 tag sing mylist 43 id sm00000012 
HMSET summery::sm00000013 comment 23 play 22 tag ent mylist 70 id sm00000013 
HMSET summery::sm00000014 comment 24 play 94 tag music mylist 59 id sm00000014 
HMSET summery::sm00000015 comment 25 play 41 tag animal mylist 22 id sm00000015 
HMSET summery::sm00000016 comment 26 play 52 tag animal mylist 34 id sm00000016 

ポイントは改行コードを CR+LF にして保存することです。

改行コードだけ注意していれば問題ありません。

そして、redis-cliの--pipeオプションを使ってパイプラインでデータを流し込むだけでデータのインポートは完了です。

% cat import_data.lst | redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 16

Redis Mass Insertion – Redis

2013-06-05追記

Perlでやるのが簡単だった。

% cat import_data.lst | perl -pe 's/\n$/\r\n/g' |redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 16