redis セットアップサンプル
使い方 awkを使用して、redisへの大量setを実行するサンプルです。 例)redis.csvの元ネタ1行から、1000行生成してredisにセットアップする awk -f scriptbuilder.awk redis.csv|redis-cli ok ok ok . . . . ok (redisへのセットごとに、redisからのokが帰る:この例は1000回) redis.csvの中身 予約語は[]で囲んで指定する [loop 1000] hmset key_test01[lineNum03] item01 value01[lineNum05] item02 value02[lineNum1] input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' [sleep 0.0001] [loopEnd] 説明 # 1.loop処理を開始する # この例では1000回繰り返しすることの開始の宣言 [loop 1000] # 2.script生成の元ネタ1行目を与え出力する # [lineNum03]は実行回数ごとに、シーケンス番号を付与します # 03の意味はprintf()文の書式文字列[%03d]の03と同じ意味、前ゼロ3桁処理します # [lineNum1]は前ゼロなしのシーケンス番号を付与します hmset key_test01[lineNum03] item01 value01[lineNum05] item02 value02[lineNum1] input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' # 出力例 hmset key_test01001 item01 value0100001 item02 value021 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01002 item01 value0100002 item02 value022 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01003 item01 value0100003 item02 value023 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01004 item01 value0100004 item02 value024 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01005 item01 value0100005 item02 value025 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01006 item01 value0100006 item02 value026 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01007 item01 value0100007 item02 value027 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01008 item01 value0100008 item02 value028 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01009 item01 value0100009 item02 value029 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' hmset key_test01010 item01 value0100010 item02 value0210 input_time '2016-10-11 12:00:00.000' update_time '2016-10-11 12:00:00.000' # 3.sleepを0.0001秒(0.1ミリ秒)する # loop処理をする際にcpuを占有しないようにする # このScriptBuilderをmulti processで動作するときのための対応策 [sleep 0.0001] # 4.loop処理の終了 loopをn回、loopEndまで繰り返す # この例では、2.から4.までを1000回繰り返す [loopEnd] # shell scriptで下記のようにすると、複数プロセスから非同期の書込みができます #!/bin/sh awk -f scriptbuilder.awk redis.csv|redis-cli -p 6379 # redisSet6379.shで作成し、実行権を与える #redisLoop.shを下記のように作成 10プロセス同時実行 #!/bin/sh for i in {0..10};\ do \ echo $i;\ ./redisSet6379.sh & \ done;