Redis(リディス)
Redisとは
Redisを開発時使用する方法
扱える型
Redis型 | 使うコマンド例 | 用途例 |
---|---|---|
String | SET key value |
基本のキーと値 |
Hash | HSET key field value |
オブジェクトっぽいデータ |
List | LPUSH key value |
キュー・スタック |
Set | SADD key value |
重複なしの集合 |
Sorted Set | ZADD key score value |
順序付きの集合 |
Bitmap | SETBIT key offset value |
ビット管理 |
HyperLogLog | PFADD key value |
概算ユニーク数カウント |
Stream | XADD key * field value |
イベントログ |
SET(GET)
設定
SET mykey "Hello, World!"
取得
GET mykey
結果
"Hello, World!"
使用用途
① セッション情報の管理
Webアプリケーションでは、ユーザーがログインしたときのセッションIDを一時的に保存する用途。
② キャッシュの保存
データベースのクエリ結果や外部APIの結果を一時的にキャッシュする。
③ 一時的なフラグ管理
処理中・完了などの状態を一時的に記録する。
④ レートリミット・API制限
一定時間内のリクエスト数を制限するカウンターと組み合わせる。
⑤ ロック機構(分散ロック)
同じリソースに複数の処理がアクセスしないよう一時ロックする。
HSET(HGET、HGETALL、HDEL、HEXISTS、HLEN、HINCRBY、HINCRBYFLOAT)
1つのキーに対して複数のフィールドと値のペア(連想配列のような構造)」を保持できるデータ構造です。主に、ユーザー情報や設定情報のような構造化されたデータを格納するのに使われます。
フィールド数が少なく(数百以下)、かつ短い文字列なら非常にメモリ効率が良いです。
SADD(SREM、SMEMBERS、SISMEMBER、SCARD、SSCAN 、SINTER、SDIFF、SUNION、SINTERSTORE)
重複なしの集合のコマンド
ZADD(ZSCORE、ZREM、ZCOUNT、ZCARD、ZPOPMIN、ZPOPMAX、ZINCRBY、ZRANGE)
順序付きの集合のコマンド
LPUSH(RPUSH、LPOP、RPOP、LRANGE、LLEN、LREM、LINDEX、LSET、LTRIM、BLPOP、BRPOP、BRPOPLPUSH、LPOS、LINSERT)
List型 に要素を「先頭から」追加するコマンドです。
SORT
SORT コマンドは、リスト(list)、セット(set)、ソート済みセット(sorted set ではない)内の要素を並び替えるために使用されます。ただし、単なる並び替えにとどまらず、外部キーを参照したり、結果をLIMITしたり、取り出した結果を保存することもできます。
HyperLogLog(ハイパーログログ)
「概算でユニークな要素の数(基数)を数えるためのデータ構造」です。大量のデータを処理する場面で、「正確性よりもメモリ効率とスピードが重要」という場合に非常に役立ちます。
特徴 | 説明 |
---|---|
目的 | ユニークな値(例:IPアドレス、ユーザーIDなど)の数を概算する |
精度 | 標準誤差約 0.81%(小さいが完全な正確性はない) |
メモリ使用量 | 常に12KB程度(非常に小さい) |
用途例 | アクセス解析、ユニークユーザー数(UU)の計測、キャンペーン応募数など |
使用するコマンドは | |
PFADD | |
PFCOUNT | |
PFMERGE | |
など |
SETRANGE
Redis の文字列の 指定した位置から文字列を書き換える コマンド
GETRANGE
Redis に保存されている文字列の 一部を取得するコマンド
INCRとDECR
数値のインクリメント(加算)とデクリメント(減算)コマンド
INCRBYとDECRBY
指定した数だけ増減するコマンド
INCRBYFLOAT
動小数点数の加算減算するコマンド
DEL
DEL キー
キーの指定は複数OK
UNLINKとの使い分け
DELは、非同期ではなく同期的に即時実行。
UNLINKは、非同期に削除したい場合に使用します(パフォーマンス重視)。
特定のページをキャッシュするサンプル
セッションを設定取得するサンプル
登録した情報のページを取得する際のサンプル
いいねのサンプル
Discussion