REDIS の特徴
REDISはインメモリーデータベースです。
MySQLやOracle、PostgreSQLのように伝統的なRDBMSに代わる技術ではありません。
REDISは素早いデータ検索やデータアクセスを行いたい場合や同時に複数のデータを読み込みたい場合、書き込みを行いたい場合に利用されます。
REDISについては以下のリンクで詳しく説明されています。
http://redis.io/documentation
Command Reference:
UbuntuにREDISをインストールします。
1 2 3 4 5 6 |
wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make sudo make install make test |
1 2 |
sudo mkdir /etc/redis sudo mkdir /var/redis |
1 |
sudo cp utils/redis_init_script /etc/init.d/redis_6379 |
1 2 3 4 |
sudo cp redis.conf /etc/redis/6379.conf sudo mkdir /var/redis/6379 sudo vi /etc/redis/6379.conf |
“daemonize”を”yes”に設定する。(デフォルトでは、”no”に設定されています。)
pidファイルを”/var/run/redis_6379.pid”に設定します。
必要であればポートも編集しましょう。今回の例では、すでに「6379」に設定されているので必要ありません。
好きなログレベルに設定しましょう。
ログファイルを”/var/log/redis_6379.log”に設定しましょう。
dirを”/var/redis/6379″に設定しましょう。
1 |
sudo update-rc.d redis_6379 defaults |
1 |
sudo /etc/init.d/redis_6379 start |
テストを行います。
redis-cli ping
上記のコマンドを入力した時、”PONG”(稼働していることを示す)と表示されれば、成功です。
ダンプファイルをディスクに保存しておきましょう。
redis-cli save
ファイルが”/var/redis/6379/dump.rdb”に作成されているか確認しましょう。
UbuntuデスクトップのGUIクライアントからリモートでREDISを操作してみます。
リモートアクセスを行えるように、Ubuntuの仮想化環境上でREDISの設定を行います。
1 |
sudo vi /etc/redis/6379.conf |
以下の行を追加しましょう。
(このコードはリモートでREDISサーバーへの接続することを許可するものです。)
1 |
bind 0.0.0.0 |
REDISを再起動します。
1 2 |
sudo service redis_6379 stop sudo service redis_6379 start |
仮想化環境のIPアドレスを確認します。
1 |
ifconfig |
確認したIPアドレスを用いて、接続の設定を行います。
“REDISのサーバーに接続します。”
UbuntuのIPアドレス
接続のテストを行います。
もし上手くいかなかった場合、VirtualBoxのネットワークの設定を「ブリッジアダプター」に変更してください。
REDISについて学習するために、以下のエクササイズを行います。
REDISデスクトップを開き、REDISサーバーへ接続します。そして、コンソール上でコマンドを実行します。
1. 文字列
REDIS上の文字列は連続するデータの集合です。また、何か特別な特徴によって判別されるものではないので、1つの文字列に最大512メガバイトのデータを保存できます。
1 2 |
SET kaisha_name "Avinton" GET kaisha_name |
文字列の一部を取得する場合
1 |
GETRANGE kaisha_name 2 3 |
新しい値を挿入し、古い値を取得する場合
1 |
GETSET kaisha_name "Avinton Japan KK" |
同時にいくつかの値を取得する場合
1 2 |
SET project z MGET project kaisha_name |
期限付きで値を設定する場合
1 |
SETEX expired_key 10 expire |
期限切れになる前に残っているデータの量を確認する場合
1 |
TTL expired_key |
2. ハッシュ
REDISのハッシュはKeyValuePairsの集合であり、文字列のフィールドと文字列の値の間を指し示すものです。そのため、ハッシュはオブジェクトを表すために用いられます。
1 2 |
HMSET kaisha:1 kaisha_name avinton kaisha_type KK employees 70 HGETALL kaisha:1 |
3. リスト
REDISのリストは単純に挿入された順番に並べられた文字列のリストです。REDISのリストの冒頭か末尾には要素を追加することも可能です。
1 2 3 4 5 6 |
lpush training linux lpush training postgresql lpush training redis lpush training memory lpush training cpu lpush training gpu |
1 |
lrange training 2 3 |
4. セット
REDISのセットは無秩序な文字列の集合です。REDISでは、一度にデータを追加・削除・テストすることが可能です。
1 2 3 4 5 |
sadd avinton gibo-san sadd avinton misaki-san sadd avinton fukushima-san sadd avinton sato-san sadd avinton takahara-san |
1 |
smembers avinton |
5. ソートセット
REDISのソートセットは、REDISのセットと同じように、非反復の文字列の集合です。セットとの違いは、ソートセットのすべてのデータはスコアと結びつけられており、最小から最大など、挿入されたセットを並べ替えるために利用することができます。データが唯一の値である場合、値は繰り返されます。
1 2 3 4 5 |
zadd avintonSS 0 redis zadd avintonSS 1 postgresql zadd avintonSS 2 linux zadd avintonSS 2 python zadd avintonSS 1 cpu |
1 |
ZRANGEBYSCORE avintonSS 2 2 |
以上の作業では、どのようにREDISを利用するのかを見てきました。
これらの作業は単純な値を保存するだけにも関わらず、REDISの拡張性に対するアイディアを提供してくれます。
保存したいデータの種類に応じて、文字列やセット、リスト、ソートセット、ハッシュなどの異なるタイプを選択します。