GoogleCloudPlatformのフルマネージドのredis、Memorystoreの性能をredis-benchmarkで計測してみる その②

# 検証その②
[この記事](https://qiita.com/fumihiko-hidaka/items/ef554385a32894aa9218)の続き

検証プログラムを書いていたら、時間をだいぶ使ってしまった。
中々検証が終わらない……けど、もう一回ぐらいで満足の行く結果が出せそう

# localのredisとgcpのredisを比較してみる

やる前からlocalのredisが負けそうな気はしますが……
localと比べてどれぐらい早いのかな？と。

前回同様に、redis-benchmarkで各コマンドを500回、同時接続数を段々と増やしていく設定でやってみます。
今回はredis-benchmarkを3回実行して、その平均の値を使用してみます。
結果は1sあたりに実行できたコマンド数です。

# macのlocal環境
redisをdockerコンテナで立ち上げて、redis-benchmarkコマンドをホストからひたすら実行！

| 同時接続数 | 1 | 10 | 25 | 50 | 100 |
| :-- | :-- | :-- | :-- | :-- | :-- |
| PING_INLINE | 2353.45 | 7969.51 | 10608.47 | 10929.51 | 7835.25 |
| PING_BULK | 2457.26 | 8510.78 | 11025.64 | 10512.6 | 10974.02 |
| SET | 2537.6 | 8268.4 | 10007.42 | 10601.73 | 8585.86 |
| GET | 2586.33 | 8697.76 | 10262.84 | 10400.13 | 8389.2 |
| INCR | 2587.77 | 8756.11 | 9828.3 | 11441.8 | 8391.34 |
| LPUSH | 2466.03 | 9024.12 | 9926.86 | 10679.27 | 9633.19 |
| RPUSH | 2257.2 | 8204.34 | 10591.13 | 10001.46 | 9817.63 |
| LPOP | 2486.2 | 7955.23 | 10054.51 | 8888.89 | 9131.58 |
| RPOP | 2668.43 | 8421.66 | 10245.51 | 11472.83 | 8703.7 |
| SADD | 2424.71 | 8680.56 | 11253.56 | 9685.85 | 8341.1 |
| SPOP | 2444.03 | 8451.55 | 9960.88 | 10357.14 | 10296.1 |
| LPUSH | 2466.03 | 9024.12 | 9926.86 | 10679.27 | 9633.19 |
| LRANGE_100 (first 100 elements) | 2164.16 | 6744.58 | 8044.58 | 8136.86 | 7559.84 |
| LRANGE_300 (first 300 elements) | 1739.92 | 4482.19 | 4727.96 | 4270.31 | 4625.08 |
| LRANGE_500 (first 450 elements) | 1516.72 | 3545.41 | 3720.64 | 3268.29 | 3397.3 |
| LRANGE_600 (first 600 elements) | 1345.15 | 2773.83 | 2866.99 | 2661.24 | 2449.77 |
| MSET (10 keys) | 2462.2 | 8429.9 | 10256.11 | 8439.71 | 8446.97 |

# GCPのMemorystore

vCPU8、CPU数8でメモリ数30GBのマシンからMemorystoreに対して実行。
redisのスペックは前回同様にバージョンは3.2、インスタンス容量は1GB、高可用性はカットしています。

| 同時接続数 | 1 | 10 | 25 | 50 | 100 |
| :-- | :-- | :-- | :-- | :-- | :-- |
| PING_INLINE | 2663.46 | 19583.34 | 34722.22 | 36111.11 | 41071.43 |
| PING_BULK | 2929.5 | 18472.22 | 34722.22 | 38571.43 | 41666.67 |
| SET | 2569.35 | 18382.35 | 35000.0 | 37896.83 | 37500.0 |
| GET | 2700.24 | 19215.69 | 36785.71 | 37500.0 | 41071.43 |
| INCR | 3005.37 | 19365.08 | 36111.11 | 36111.11 | 41071.43 |
| LPUSH | 2363.36 | 19365.08 | 32222.22 | 37896.83 | 39285.71 |
| RPUSH | 2447.55 | 18799.02 | 33611.11 | 41666.67 | 41071.43 |
| LPOP | 2807.65 | 19166.67 | 33611.11 | 37896.83 | 41071.43 |
| RPOP | 2601.71 | 18055.56 | 37777.78 | 36785.71 | 39285.71 |
| SADD | 2968.76 | 18750.0 | 35000.0 | 39285.71 | 41071.43 |
| SPOP | 2873.02 | 20833.33 | 35396.83 | 39285.71 | 41071.43 |
| LPUSH | 2363.36 | 19365.08 | 32222.22 | 37896.83 | 39285.71 |
| LRANGE_100 (first 100 elements) | 2404.47 | 15025.06 | 21501.83 | 24358.98 | 24358.98 |
| LRANGE_300 (first 300 elements) | 1672.53 | 9113.25 | 11441.8 | 11846.15 | 10600.26 |
| LRANGE_500 (first 450 elements) | 1678.36 | 6485.26 | 7592.39 | 7830.91 | 7692.31 |
| LRANGE_600 (first 600 elements) | 1601.6 | 5203.69 | 6214.73 | 6127.66 | 6042.42 |
| MSET (10 keys) | 2590.8 | 18014.7 | 30202.02 | 33333.34 | 33333.34 |

# 同時接続数100の結果を比較してみる

| 項目 | local | gcp |
| :-- | :-- | :-- |
| PING_INLINE | 7835.25 | 41071.43 |
| PING_BULK | 10974.02 | 41666.67 |
| SET | 8585.86 | 37500.0 |
| GET | 8389.2 | 41071.43 |
| INCR | 8391.34 | 41071.43 |
| LPUSH | 9633.19 | 39285.71 |
| RPUSH | 9817.63 | 41071.43 |
| LPOP | 9131.58 | 41071.43 |
| RPOP | 8703.7 | 39285.71 |
| SADD | 8341.1 | 41071.43 |
| SPOP | 10296.1 | 41071.43 |
| LPUSH | 9633.19 | 39285.71 |
| LRANGE_100 (first 100 elements) | 7559.84 | 24358.98 |
| LRANGE_300 (first 300 elements) | 4625.08 | 10600.26 |
| LRANGE_500 (first 450 elements) | 3397.3 | 7692.31 |
| LRANGE_600 (first 600 elements) | 2449.77 | 6042.42 |
| MSET (10 keys) | 8446.97 | 33333.34 |

見事に結果に差が出てしまいました。
簡単な操作であれば3〜4倍以上、複数件の操作をする内容であれば2倍〜以上の性能に差が出ています。
やる前からわかっていた感じではありますが:thinking:

# 考察

さすがにlocalと比較すると、gcpは猛烈に早い！
次はawsと比較しよう。