この記事では、Redis のデータ構造を深く理解し、これらのデータ構造のアプリケーション シナリオを確認します。お役に立てば幸いです。
Redis は、ANSI C 言語で書かれた Key-Value ストレージ システムです。 キーのタイプは文字列です。 [関連する推奨事項: Redis ビデオ チュートリアル ]
値のデータ型の 8 つのデータ型:
一般的なデータ型
string 文字列タイプ
Note
Redis の String は、文字列、整数、浮動小数点数の 3 種類の値を表現できます。100.01 は 6 桁の文字列です
#set | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
get | get key | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getset | getset key value | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#mset | MSET key1 value1 key2 value2 .. keyN valueN | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
の値を対応する値に設定します。 | mget MGET KEY1 KEY2 .. KEYN |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EXPIRE | EXPIRE key 秒数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
append | キー値を追加 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#strlen | strlen key | 文字列の長さを取得 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setnx | setnx キー値 | 値が存在しない場合に割り当てが使用されます | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
incr | incrキー ##増分番号 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
incrby key increment | 指定した整数を増やす | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
decr key | 数値を減らす | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
decrby key decrement | 指定された整数を減少させます | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
##lpush | lpush key v1 v2 v3. .. | 左側からリストを挿入 |
---|---|---|
lpop key | リストの左側から削除 | |
rpush key v1 v2 v3 ... | リストを右側から挿入 | |
rpop key | リストの右側から取得します | |
lpushx キーの値 | 値をリストの先頭に挿入します | |
blpop キーのタイムアウト | Takeリストの左側からそれを選択し、リストが空のときにブロックします。最大ブロック時間を秒単位で設定できます。 | |
llen キー | リスト内の要素の数を取得します | |
lrange key start end | リスト内の指定された範囲の要素を返します範囲はstartとendで指定します | lset |
リストのインデックス位置の要素を値に設定します値の | rpoplpush | |
key1 リストの右側からポップアップし、key2 の左側に挿入しますlist | rpushx | |
リストの末尾に値を挿入します。 value | brpop | |
リストの右側から取り出し、リストが空のときにブロックします。最大ブロック タイムアウトは秒単位で設定できます | lindex | |
リスト内の添字がインデックスである要素を取得します。インデックスは 0 から始まります。index | ltrim | |
リストをトリミングし、開始から終了までの範囲 end のみを保持します | brpoplpush | |
key1 リストの右側からポップし、key2 リストの左側に挿入します。これにより、key1 key2 | linsert | |
値ピボットの前後に値をリストに挿入 | ##アプリケーション シナリオ | |
1 、スタック (スタック) = LPUSH LPOP |
共通コマンド
srem | srem key value1 value2 .... | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#smembers | smembers key | # #コレクション内のすべての要素を取得##spop | ||||||||||||||||||
#srandmember | srandmember key count | |||||||||||||||||||
#scard | #scard key | コレクション キー内の要素の数を取得します | ||||||||||||||||||
#sismember key member | コレクション key にメンバー要素が存在するかどうかを判定 | |||||||||||||||||||
sinter key1 key2 key3 | Find複数のセットの共通部分 | |||||||||||||||||||
sdiff key1 key2 key3 | 複数のセットの差分を見つける | |||||||||||||||||||
sunion key1 key2 key3 | 複数のセットの差分を見つける Union |
コマンド形式 | コマンド説明 | |
---|---|---|
zadd key スコア1 メンバー1 スコア2 member2 ... | スコア付けされた要素を順序付きセットに追加します key | |
zrem key mem1 mem2.... | From 順序付きセットから要素を削除する key | |
zcard key | 順序付きセット内の要素の数を取得する | |
zcount key min max | スコア値が [min,max] 間隔内にあるコレクション内の要素の数を返します | |
zincrby キー インクリメント メンバー | は、順序付きセット キー内の要素メンバーのスコアにインクリメントを加えたものです | ##zscore |
順序付きセット key 内の要素メンバーのスコアを返します | zrank | |
セット内のメンバーのスコアを取得します。 ランキング (スコアによる小から大まで) | #zrange | |
start 添字から stop 添字を持つ要素までの正の順序でオーダード セット キーを取得します | zrevrank | |
順位を取得しますセット内のメンバー (スコアに基づいて大きいものから小さいものまで) | zrevrange | |
順序付きセット キーの要素を取得します開始添え字から終了添え字まで逆順に | #アプリケーションシナリオ |
##3. 文字列ストレージと比較して、スペースを節約できます。
2. Redis クラスター アーキテクチャは大規模な使用には適していません
hset key field value | ハッシュテーブルのキー値の格納 key | |
---|---|---|
ハッシュ テーブル内 key に複数のキーと値のペアを格納します | hget | |
フィールドが存在するかどうかを確認します | hmget | |
フィールド値の取得 | hsetnx | |
存在しないハッシュ テーブルのキー値を格納します。 key | hexists | |
フィールドが存在するかどうかを確認する | hgetall | |
複数のフィールド値を取得する | # #hdel | |
指定されたフィールドを削除します | hincrby | |
増分以降のフィールドを指定 | hlen | |
フィールド数の取得 | ## アプリケーション シナリオ | |
#オブジェクト キャッシュ | ショッピング カートの操作 |
オフセットにキーのビット値を設定します (0 または 1 のみ可能)。 | #getbit | getbit key offset | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
##bitcount | bitcount key | 1 であるキー ビットの数を取得します | ||||||||||||||||||
bitpos キーの値 | Returnビット値として設定される最初のインデックス値 | |||||||||||||||||||
bitop and[or/xor/not] destkey key [key ...] | 複数のキーに対して論理演算を実行し、それらを destkey に保存します | |||||||||||||||||||
コマンド名 | コマンドフォーマット | コマンド説明 |
---|---|---|
|
||
geoadd キー経度緯度メンバー名 1 経度 1 緯度 1 メンバー名 2 経度 2 緯度 2 ... | 地理座標の追加 | |
geopos キー メンバー名 1 メンバー名 2... | メンバーの緯度と経度を返す | |
geodist キー メンバー 1 メンバー 2 ユニット | メンバー間の距離の計算 | |
georadiusbymember キー メンバーの値の単位カウント番号 asc [desc] | メンバーに基づいて近くのメンバーを検索 | |
geohash キー メンバー名 1 メンバー名 2... | 標準の geohash 文字列を返す |
2. 距離を計算する
3.「近くにいる人」を探す
ストリーム データ フロー タイプ
以下を含むメッセージ キューのすべての内容をほぼ満たします。
メッセージ ID のシリアル化生成その他のプログラミング関連の知識については、
プログラミング入門以上がRedis のデータ構造の詳細な分析とアプリケーション シナリオについての説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。