スキップしてメイン コンテンツに移動

[Python][Redis]Redisに保持する為替レートと株価のデータ設計

KVSであるRedisに保持するデータ設計のメモ。

大きく分けて以下の2種類Key-Valueを使う。
  1. 時刻または日付を保持するList型Key-Value
  2. 1.の時刻または日付をKeyとして各銘柄の価格を保持するHash型Key-Value

時系列データ保存時にはListに時刻をLPUSHし、LPUSHした時刻をKeyとしたHashのHashKey=銘柄名(TICKER等)とHashValue=価格をHMSETで保存する。

※訂正:下部吹き出し”List型”とありますが、正しくは”Hash型”です。

RedisのList型ではLRANGEというコマンドがあり、開始と終了のINDEX(左から0,1,2...n)を指定してやれば直近何個分という取り方が容易になる。上記「TIME_IDX」を全件取得する場合にはINDEXを0~-1という指定してやれば全件取得できる。

なお処理時間は以下の通り。
この設計だと「時系列データの件数+1回」のgetが走ることになるので今後データが増えた場合にどうなるか監視する必要がありそう。

  • LRANGE(全件=約35,000件):0.5-0.8s/req
  • HGETALL:0.0004-0.0010/req

以上。

コメント