Redis 入門
まず,Redis よく使うデータ構造は、5種類
- String
- Hash
- List
- Set
- Sorted set
下記は、5種類データ属性の性質と応用場面:
応用場面1:key/valueのキャッシュ用。memcacheみたい。
$ mset [key_name_1] [value_1] [key_name_2] [value_2]
$ get [key_name]
$ mget [key_name_1] [key_name_2] [key_name_3]
応用場面2:incrementとして使う、例えば Web ページのヒット数などを保持したい場合
$ INCR mykey # return 11.
$ DECR mykey # return 10.
応用場面:ユーザの属性の保存、出力。
例:ユーザの名前と年齢と誕生日であれば
・ユーザ(Key).名前(Field)=Aさん(value)
・ユーザ(Key).年齢(Field)=35(value)
・ユーザ(Key).誕生日(Field)=19700701(value)
応用場面:
1)高頻度の追加、queueとして利用
2)時系列(追加順)に表示
3)追加された要素にアクセスが集中
例:Twitterのタイムライン、
ECサイトの現在購入タイムライン、
大量アクセスのqueue
$ lpush [key_name] [member] # リストの先頭に値を追加
$ rpop [key_name] # リストの末尾の値を削除
$ lpop [key_name] # リストの先頭の値を削除
$ lrange [key_name] 0 3 # 1番目から4番目まで値を取得
$ lrange [key_name] 0 -1 # 1番目から最後(最後から1番目)までの値を取得
$ lindex [key_name] 2 # 3番目の値を取得
$ lindex [key_name] -1 # 最後の値を取得
$ llen [key] # 要素の数を取得
応用場面:定番の例として「タグ検索」機能。
例:積の集合 SINTER tag:red tag:blue
$ srem [key_name] [member] # 値を削除
$ smembers [key_name] # 値の参照
$ sunion [key_name_1] [key_name_2] # 和集合の取得
$ sdiff [key_name_1] [key_name_2] # 差集合の取得
$ sinter [key_name_1] [key_name_2] # 積集合の取得
- Sorted Setコマンド:zadd,zrange,zrem,zcard等。
基本的にSetと同じ、違うのは、sortされているかどうか。詳細でいうと,SET型の各要素に"score”というものが付与され、sortできる。
応用場面:
1)ランキング(PV数やコメント数順)
$ zrem [key_name] [member] # 値を削除
$ zrange [key_name] 0 3 # scoreの低い順に1番目から4番目の値を取得
$ zrevrange [key_name] 0 3 # scoreの高い順に1番目から4番目の値を取得
$ zrank [key_name] [member] # scoreの値の順位を取得(scoreの低い順)
$ zrevrank [key_name] [member] # scoreの値の順位を取得(scoreの高い順)