redis 大量セットアップデータ生成

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;

 

コメントを残す