Redisクラスタの作成
- AWSコンソール> ElastiCacheダッシュボード> サブネットグループからサブネットグループを作成
- サブネットグループはRedisクラスタを作るときに指定しないといけないので、あらかじめ作っておく
- AWSコンソール> ElastiCacheダッシュボード> RedisからRedisクラスタを作成
- 練習用なのでレプリカは作らない
- Redisと同じAZにEC2を立てたいので、優先AZを指定しておく
- EC2からアクセスできるようにSGを設定しておく(今回のサンプルではdefault SGをつける)
EC2の作成
- Redisクラスタと同じVPC、subnet内にEC2を立てる
- AmazonElastiCacheFullAccessポリシーをアタッチしたロールを付与しておく
- RedisクラスタにアクセスできるようにSGを設定しておく(今回のサンプルではdefault SGをつける)
クライアントアプリ
- Pythonから使う
- pipでredisライブラリを入れる
- pip install redis
- get, set, hset, hget, hmset, hmgetとかを試してみる
- 速度がどれくらいでるか気になったので以下のプログラムで測定してみた
import time import redis host = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com' port = 6379 r = redis.StrictRedis(host=host, port=port) T = 10000 set_elapsed_times = [] for i in range(T): key = 'k%d' % i val = 'v%d' % i start_time = time.time() r.set(key, val) t = time.time() - start_time set_elapsed_times.append(t * 1e6) # micro sec get_elapsed_times = [] for i in range(T): key = 'k%d' % i val = 'v%d' % i start_time = time.time() v = r.get(key) t = time.time() - start_time get_elapsed_times.append(t * 1e6) # micro sec
測定結果
- get/secともに、平均で250 micro secくらい
- setのmaxが13milli secくらいかかってるのが気になる
処理 | GET [microsec] | SET [microsec] |
mean | 259.323335 | 241.534066 |
std | 138.918826 | 232.519214 |
min | 212.669373 | 206.708908 |
25% | 234.842300 | 224.113464 |
50% | 246.286392 | 231.504440 |
75% | 260.114670 | 241.279602 |
max | 3891.468048 | 13475.656509 |
ついでにボックスプロット(1% - 99%範囲外のデータは例外とみなして除去)も書いてみた。