ホームページ  >  記事  >  データベース  >  Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

咔咔
咔咔オリジナル
2020-05-25 16:53:141775ブラウズ

1.string型

1-1 string型データの基本操作

データの追加/変更: キー値の設定

#データの取得:

get key

#データの削除:
del キー

複数のデータの追加/変更: mset key value key1 value1

##複数のデータの取得:

mget key key1

#元のデータの末尾に情報を追加します (存在しない場合は追加します):
append key value

##1-2 文字列型の増減操作

指定された範囲内の値を増やすように値を設定します: incr キーのデフォルトは毎回 1 ずつ増加します | 新しい値が追加されるたびに incrby キーの値
データを設定します指定範囲を減らすには: decr key | decrby key value は新しい値を追加するのと同じです

アプリケーション シナリオ

データベース テーブル ID の主キーを制御し、データベース テーブルの主キー生成戦略を提供して、データ テーブルの主キーの一貫性を確保します。

有効期限の設定:

setex キーの秒値

アプリケーション シナリオ

時間制限のある投票機能の実現: たとえば、WeChat 投票は 1 時間に 1 回行うことができます
ホットな実現情報: 例: eコマース 業界で人気の製品、ニュース Web サイトで人気のニュース

1-4 文字列型のアプリケーション シナリオ

Weibo big V ホームページ 頻繁にアクセスするには、ファン、フォロワー、Weibo の数を随時更新する必要があります。これは高頻度の情報なので、redis の文字列型を利用することで解決できます
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
ユーザーの主キーと属性をキー値として、redis に big V のユーザー情報を設定します。導入事​​例です。
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
ここで、キーの命名規則について簡単に説明する必要があります: テーブル名 主キー 主キー値 フィールド: フィールド値。このようなルールに従って名前を付けることで、キーの値を非常に適切に管理できます。

別の方法を使用してこれを実現することもできます。これは、キーの後に構造体を直接続けることです。たとえば、
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
上記のどちらの方法でも、次のことが可能です。はい、最初の値は任意の値を簡単に管理できるのに対し、2 番目の値は毎回変更する必要があるというだけです。ビジネス シナリオに応じて、定期的に更新できます。

データの追加/変更:

hset キー フィールド値

データの取得:

hget キー フィールド | hgetall キー

データの削除:

hdel キー フィールド field1

複数のデータの追加/変更: hmset キー フィールド value field1 value1

##複数のデータの取得:

hmget key field field1

テーブル内のフィールドの数を取得します:

hlen key

テーブルにフィールドが存在するかどうかを取得します:

hexists キー フィールド

2-2 ハッシュ型データの拡張操作

ハッシュ テーブル内のすべてのフィールド値を取得します: hkeys key

ハッシュ テーブル内のすべてのフィールド値を取得します。 hvals key

指定したフィールドの値を設定して、指定した範囲の値を増やします: hincrby key field increment | hincrbyfloat キー フィールドの増分

2-3 ハッシュ ビジネス シナリオ ショッピング カート

この画像はインターネットから取得したもので、自家製ではありません。ショッピング カートのシーンをシミュレートしているだけです。
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
上の画像では、ショッピング カート内の情報が表示されています。 , これを処理するために Redis を使用します. ショッピング カートの実装。

これは、ショッピング カートの追加とショッピング カートの取得の実装です。キーの名前は、テーブル名、主キー、主キーの値です。
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
上記では、テーブル名、主キー、主キーの値という名前が付けられています。問題の 1 つは、製品情報のストレージに多くの重複が存在するため、製品を個別にハッシュする必要があることです。以下の図に示すように、ここでは製品 ID
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
のみを指定します。1 つは複数のフィールドを設定する方法、もう 1 つは直接 json として保存する方法です。情報が頻繁に変更されない場合は、json
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
を使用してメソッドhsetnx キー フィールドの値を提供できます。存在する場合は追加されません。存在しない場合は追加されません。 、追加されます。この機能は、異なるユーザーが同じ商品を追加した場合に、上書きや無駄な操作を避けるために使用されます
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

##3. list type

データストレージ要件: 複数のデータを保存し、データのストレージスペースの順序を区別します。
必要なデータ構造: 1 つのストレージスペースに複数のデータを保存し、エントリの順序をデータを通じて反映できます
リスト型: 複数のデータを保存します。最下層は二重リンクリスト格納構造を使用して実装します。

データの追加/変更:

lpush キー値 value1 | rpush キー値 value1

データの取得: lrange キー start end | lindex キー インデックス | llen key

データの削除: rpop key | lpop key

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

#3-2 リスト型データの拡張操作##

指定された時間内にデータを取得および削除します: blpop key1 key2 timeout | brpop key1 key2 timeout

この関数の単純なケースを作成します。わかりやすい

#左側のターミナル コマンドを実行すると、削除されたデータが返されるまで 30 秒待機します。

右側の add コマンドが実行されます。 左側は削除されたデータを直接返します。
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

上記でリストの基本操作がわかりました。lpop キーまたは rpop キーを実行すると、do または右側から削除できますが、友人のサークルがビジネスを気に入ってキャンセルするシナリオがあります。途中からのデータです。ケースは以下のとおりです。

最初に a b c d
を list5 に追加し、次に c を削除します
確認すると、a b d だけが残ります
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

4. セットタイプ

新しいストレージ要件: 大量のデータを保存し、クエリの利便性を高めるために効率を向上させます
必要なストレージ構造: 大量のデータを保存できる、効率的な内部ストレージメカニズム、クエリが簡単
set タイプ: ハッシュストレージ構造とまったく同じ、値ではなくキーのみを格納し (nil)、値の繰り返しは許可されません

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

4-1 セット型データの基本操作

追加/modify data:sadd キーメンバー member1

データの取得: smembers key

データの削除: srem key member1

コレクションデータの総量を取得: scard key

コレクションに指定したデータが含まれているかどうかを判定: sismember key member

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

4-2 セット型データ展開演算

セット内の指定された数のデータをランダムに取得します: srandmember key count

コレクション内の特定のデータをランダムに取得し、コレクションから新しいデータ セットを削除します: spop key

話題の情報、話題のニュース、売れ筋旅行、アプリアプリのレコメンド、フォローレコメンドなどをランダムにプッシュ.

Kaka は最近ディスカスを書いているため、このケースは注意喚起を達成するために使用されます。

ケース 1: 特定の推奨メカニズムに従って対応するユーザーをセットに格納し、毎回推奨する必要がある 2 人のユーザーをランダムに取得します

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

ケース 2: 特定の推奨メカニズムに従ってセットに対応するユーザーを保存し、日付に基づいて毎日推奨されるユーザーを繰り返すことはできません

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

交差点、和集合、および差集合

sinter key key1
sunion key key1
sdiff key key1
2 つの集合の積集合、和集合、および差集合は、指定された集合に格納されます

sinterstore destination key1 key2
sunionstore destination key1 key2
sdiffstore destination key1 key2

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
案例:我们需要挖掘一个信息的共同好友。例如微信公众号的共同关注好友数量、QQ添加新好友的推荐机制、深度挖掘用户直接的联系

就根据上述案例,我们可以使用差集来实现qq的有可能认识的好友。

4-5 set类型业务场景 实现网站的PV UV IP的记录

PV直接使用string类型的incr统计即可

UV和IP都是独立不重复的,使用set来操作。

在上边我们知道set有一个特性就是不能重复,我们就可以根据这一点来轻松实现这个功能。然后使用scard key 来统计数量。

独立訪問者としての UV については、ローカル Cookie を使用してそれを実現できます。同様に、記録のために Cookie を Redis に渡します
Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事

5.sorted_set タイプ

前の 4 つのタイプはいずれも並べ替えをサポートしていません。以下で説明するsorted_set タイプは、ビッグ データのストレージと並べ替えの両方をサポートしています。 function

5-1.sorted_set 型の基本操作

データの追加:zadd キー スコア メンバー

データの取得: zrange キー スタート ストップ | zrevrange キー スタート ストップ

データの削除: zrem キー メンバー

Redis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事
条件に基づいてデータを取得: zrangebyscore キーの最小最大制限| zrevrangescore key max min

データの条件付き削除: zremrangebyrank key start stop | zremrangebyscore key min max

## コレクション データの総量を取得します: zcard key | zcount key min max

交差部分と操作を設定します: zinterstore destination numkeys key | zunionstore destination numkeys key(このコマンドは実演しません。ドキュメントを自分で確認できます。これは set と似ていますが、次の点が異なります。すべての交差の合計が加算されます。次に、numkeys があります。このパラメータは、計算に必要なキーの合計数です。必要なキーの数は後で必要になります)

対応するインデックスを取得しますデータへ:zrank キー メンバー | zrevrank キー メンバー

socre 値の取得と変更: zscore キー メンバー | Zincrby キー インクリメント メンバー

概要

上記は、redis データ型の簡単な紹介と具体的なアプリケーションです。次の記事では、実際の戦闘は特定のニーズに基づいて実行されます。

以上がRedis の 5 つの主要なデータ型とアプリケーション シナリオを理解するための 1 つの記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。