このページは?
メモリキャッシュシステムであるRedisについて解説するページです。対象読者は、MySQLやMemcacheについて知っており、それらについてある程度プログラムを組んだことのある人です。
Redisってなに?
MemcacheみたいなKey-Value型メモリキャッシュシステム。MySQLみたいなRDBMSと違い、メモリにデータを保存するため、より高速な読み書きが実現できます。
また、Memcacheよりも多くのデータ型を備えており、より自由度の高い設計を行えることも特徴の1つです。
まず使ってみる
1. 利用OSにあったものをダウンロードしてインストールする。
以下のページからダウンロード
http://redis.io/download
2. redis-cliで値をsetしたりgetしてみたりする
Redis用のクライアント(redis-cli)でまずは値を出し入れしてみる。
3. プログラム言語から使ってみる
公式ページに言語別クライアントモジュールが置いてあるので、好きな言語のモジュールをダウンロードして使ってみる。大量の読み書きを行うことで、MySQLとの性能の違いを実感してみるのも良し。
http://redis.io/clients
データ型の種類
Redisが提供する5種類のデータ型を列挙・概説します。
- String 1つのキーに対して1つの文字列を格納する
- Hash field-value型のMapを格納する
- List リスト型の値を格納する。重複OK
- Set セット型の値を格納する。重複できない。逆にいうと重複が自動で排除される
- Sorted Set 順序を付けられるセット型の値を格納する。順序付けのため、セット内の各要素にScoreと呼ばれる数値がひもづけられる
String
- 1つのキーに対して1つの文字列を格納する
- もっとも基本的なデータ型
例)
key1 - value2
key2 - value2
key3 - value3
Hash
- field-value型のMapを格納する
- fieldとvalueはどちらも文字列を格納する
- Mapであるため、1つのキーの中では同名のfieldを複数持つことはできない
Hashの例)
key1 - filed1 - value1
key1 L field2 - value2
key1 L field3 - value3
key2 - filed4 - value4
key1 L field5 - value5
key1 L field6 - value6
List
- 文字列のリストを格納する
- 値を追加した順序が保持される
- 値は重複していてもOK
- リスト前後からの値の出し入れが可能(LPUSH, RPUSH, LPOP, RPOP)
- リスト中の要素番号を範囲指定して取り出せる(LRANGE)
Listの例)
key1 - value1
key1 L value2
key1 L value3
key1 L value1
key1 L value2
key1 L value3
Set
- 順序のないリスト(セット)を格納する
- 重複のない値、または重複をチェックする必要の無い値を格納するのに適している
- 異なるセットを比較することができる
- セット同士を結合することができる
Setの例)
key1 - value1
key1 L value2
key1 L value3
key1 L value4
key1 L value5
key1 L value6
Sorted Set
- Setの各要素(Member)にソート用の数値(Score)を付加したセット。Scoreで自動的にソートされる
- Scoreは重複可能
- Memberは文字列値。重複できない
- Scoreの値・範囲を指定してMemberを取得できる。削除もできる。
- Memberを指定して取得・削除ができる(1個だけ。範囲指定は無理)
- 要素の順位(RANK)を取得できる。また、RANKを指定して削除することもできる
Sorted Setの例)
key1 - member1 - score1
key1 L member2 - score2
key1 L member3 - score3
key1 L member4 - score3
つづく。