高速データ管理!インメモリ KVS の Redis を使ってみた
はじめに
KVS (Key-Value Store) とは?
KVS とは Key-Value Store の略で、ざっくり言うとキーと値の組み合わせでデータを管理するしくみのことです。 RDB (リレーショナル・データベース) に代わるデータ管理手法 (NoSQL) のひとつで、近年注目を浴びています。
インメモリ KVS の Redis
Redis は インメモリ型の KVS です。インメモリ (オンメモリとも呼ばれる) とはデータをハードディスクなどには書き込まずメモリ上で管理するしくみのことで、RDB などに比べ非常に高速にデータを出し入れできるという特徴があります。ちなみに「remote dictionary server」の略らしいです。
今回は Redis をインストールして Ruby, Java, Node.js から使うまでの流れを超ざっくり紹介したいと思います。
Redis のインストール
Mac OS X にインストールする
Mac の場合は Homebrew を使うと簡単にインストールできます。
brew install redis # 自動起動 mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/redis/2.6.4/homebrew.mxcl.redis.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Amazon Linux にインストールする
Amazon Linux にインストールする場合は --enablerepo=epel を付けます。これは Amazon Linux AMI の Extra Packages for Enterprise Linux (EPEL) へのアクセスがオフになっているためのようです。
yum install -y gcc yum install -y redis --enablerepo=epel chkconfig redis on /etc/init.d/redis start
Redis を使ってみる
redis-cli で遊ぶ
Redis をインストールすると redis-cli というツールをコマンドから使うことができます。以下のような感じです。
redis-cli redis 127.0.0.1:6379> set key value OK redis 127.0.0.1:6379> get key value
Ruby から使う
Ruby から使う場合はまず Gemfile にライブラリを追加します。
Gemfile
gem 'redis'
その後 bundle install は忘れずに。
bundle install
Redis からデータを出し入れするには Redis クラスをインスタンス化して使います。
redis = Redis.new redis.set('key', 'value') p redis.get('key') # value
超簡単ですね!
Java から使う
Java から使う場合は Jedis というライブラリがオススメらしいので軽く使ってみたいと思います。 まずは以下から jar ファイルをダウンロードしましょう。
http://github.com/xetorthio/jedis/downloads
あとはプロジェクトのライブラリに jar ファイルを追加して、完了です。以下の様な感じで使います。
Jedis jedis = new Jedis("localhost"); jedis.set("key", "value"); String value = jedis.get("key"); System.out.println(value); // value
超簡単ですね!
Node.js から使う
Node.js から使う場合は node_redis というライブラリを使います。npm でインストールして createClient() でクライアントを作成し、データの出し入れを行います。
# インストール npm install redis # 使ってみる node > var redis = require("redis"), client = redis.createClient(); undefined > client.set("key", "value", redis.print); true > Reply: OK > client.get("string key", redis.print) true > Reply: string val
超簡単ですね!
まとめ
いくつかの言語で使ってみましたが、いずれも超簡単に実装できました。今回は簡単にキー・バリューの格納・取り出ししかしていませんが、他にもコマンドはあります。公式がとっても参考になります。
Redis は環境構築も簡単ですし実装もめっちゃ楽なので、使ったことないかたはこの機会にぜひ使ってみてください!