先日の記事で、redis を使ってみるを書いたのだけど、ruby からの使い方がわかったので、まとめておきたい。
目次
実行環境
- windows
- Windows10 ver.1909
- Mac
- macOS Mojave 10.14.4
参考
準備
以下の手順で、環境準備を行う。
1 | bundle init |
最低限の動作確認
実装 1
sample.rb
を作成します。
1 | require "redis" |
確認 1
以下のコマンドを実行します。
1 | bundle exec ruby sumple.rb |
実行結果は、以下の通りです。
1 |
|
もう 1 回実行すると設定済みなので、”value”が帰ってきます。もちろん String クラスです。
1 | value |
最低限の動作を確認できました。
node.js では見かけなかった処理
おそらく、node.js で redis を使うときには見かけなかった「Pipelining」の記述を見つけたので、試してみる。
Pipelining を使うと高速化できるということなので、
100 回値の設定をする処理を 10 回繰り返し時間を計測してみます。
実装 2
redis.pipelined
を使うsample2-A.rb
を作成します。
1 | require 'benchmark' |
redis.pipelined
を使わないsample2-B.rb
を作成します。
1 | require 'benchmark' |
確認 2
sample2-A.rb``sample2-B.rb
のそれぞれを実行し、処理時間を比較します。
1 | bundle exec ruby sumple2-A.rb |
redis.pipelined
を使った場合、には約 0.002 秒で済んだ処理が、約 0.025 秒かかってしまいました。
確かに redis.pipelined を用いることで高速化を図ることができました。
ただし、github - redis-rbの説明では、「処理に依存関係がないとき」という記述があるので、注意が必要そうです。
今回は、redis を ruby から扱ってみました。redis.pipelined
での速度比較は、10 倍以上の差が出たことには、結構驚きました。
実装方法次第で、高速化できる点は心にとめておきたいとことでした。
次は rails への redis を導入を試す予定です。
ではでは。