ホームページ  >  記事  >  データベース  >  Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

青灯夜游
青灯夜游転載
2021-09-18 20:01:303386ブラウズ

Redis はどこに適用できますか?この記事では、Redis の一般的な 16 の使用シナリオをまとめて紹介します。

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

#[関連する推奨事項:

Redis ビデオ チュートリアル]

1. キャッシュ

文字列型

例: ホット データ キャッシュ (レポート、有名人の不正行為など)、オブジェクト キャッシュ、全ページ キャッシュ、ホット データを改善できるアクセス データ。

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

2. 分散データ共有

文字列型 (Redis は分散型の独立したサービスであり、複数のアプリケーション間で共有できるため)

For例: 分散セッション

<dependency> 
 <groupId>org.springframework.session</groupId> 
 <artifactId>spring-session-data-redis</artifactId> 
</dependency>

3、分散ロック

文字列型のsetnxメソッドは、存在しない場合にのみ正常に追加でき、true

public static boolean getLock(String key) {
    Long flag = jedis.setnx(key, "1");
    if (flag == 1) {
        jedis.expire(key, 10);
    }
    return flag == 1;
}

public static void releaseLock(String key) {
    jedis.del(key);
}

4、グローバルIDを返します。

int型、incrby、atomicity使用

incrby userid 1000

サブデータベースとサブテーブルのシナリオでは、セクションを一度に取得します

5、Counter

int 型、incr メソッド

例: 読まれた記事の数、Weibo の「いいね!」の数、一定の遅延を許容し、最初に Redis に書き込んでから Redis に同期します。

6. 現在の制限

int型、incrメソッド

は訪問者のIPなどの情報をキーとして使用し、訪問するたびにカウントが増加します。数値を超えると false が返されます

7. ビット統計

String 型のビット数 (1.6.6 で導入されたビットマップ データ構造)

文字は 8 ビットで格納されますバイナリ

set k1 a
setbit k1 6 1
setbit k1 7 0
get k1 
/* 6 7 代表的a的二进制位的修改
a 对应的ASCII码是97,转换为二进制数据是01100001
b 对应的ASCII码是98,转换为二进制数据是01100010

因为bit非常节省空间(1 MB=8388608 bit),可以用来做大数据量的统计。
*/

例: オンライン ユーザー統計、ユーザー統計を保持

setbit onlineusers 01 
setbit onlineusers 11 
setbit onlineusers 20

ビットごとの AND、ビットごとの OR などの演算をサポート

BITOPANDdestkeykey[key...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。       
BITOPORdestkeykey[key...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。 
BITOPXORdestkeykey[key...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。 
BITOPNOTdestkeykey ,对给定 key 求逻辑非,并将结果保存到 destkey 。

7 年間オンラインだったユーザーを計算days

BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ...  "day_7_online_users"

8. ショッピング カート

文字列またはハッシュ。文字列で実行できるすべてのハッシュは実行できます

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

    キー: ユーザー ID; フィールド: 製品 ID; 値: 製品数量。
  • 1: ヒント。 -1:hdecr。削除:hdel。すべて選択: hgetall。アイテムの数: hlen。
9. ユーザー メッセージ タイムライン timeline

list (二重リンク リスト) は、タイムラインとして直接使用できます。挿入順序

10. メッセージ キュー

リストには、blpop/brpop という 2 つのブロック ポップアップ操作があり、タイムアウトを設定できます

    blpop: blpop key1 timeout は、リストの最初の要素を削除して取得します。リストに要素がない場合、待機がタイムアウトになるか、ポップアップ要素が見つかるまで、リストはブロックされます。
  • brpop: brpop key1 timeout は、リストの最後の要素を削除して取得します。リストに要素がない場合、待機がタイムアウトになるか、ポップアップ要素が見つかるまで、リストはブロックされます。
上記の操作です。実際、これは Java のブロッキング キューです。学ぶことが増えれば増えるほど。学習コストは低くなります。

    キュー: 先入れ先出し: rpush blpop、左頭と右尾、右側がキューに入り、左側がキューから出ます
  • スタック:先入れ後出し: rpush brpop
11. Draw

ランダムな値

spop myset

12. いいね、サインイン、クロックイン

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

上記の Weibo ID が t1001 で、ユーザー ID が u3001 であるとします。

t1001 を維持するには、like:t1001 を使用します。この Weibo を気に入ったすべてのユーザー

    この Weibo にいいね!:sadd like:t1001 u3001
  • いいねをキャンセル: srem like:t1001 u3001
  • いいねかどうか: sismember like:t1001 u3001
  • すべてのユーザー好きな人:メンバー いいね:t1001
  • 好き:スカード いいね:t1001
データベースよりもずっと簡単ではないでしょうか。

13. 製品タグ

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

古いルールでは、tags:i5001 を使用して製品のすべてのタグを管理します。

    sadd tags:i5001 絵は鮮明で繊細です
  • sadd tags:i5001 True color 鮮明なディスプレイ
  • sadd tags:i5001 プロセスは素晴らしいです
14. 製品の選択

// 获取差集
sdiff set1 set2
// 获取交集(intersection )
sinter set1 set2
// 获取并集
sunion set1 set2

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

iPhone11 が発売されている場合

sadd brand:apple iPhone11

sadd brand:ios iPhone11

sad screensize:6.0-6.24 iPhone11

sad screentype:lcd iPhone 11

製品、Apple、iOS、6.0 の間の画面を選択してください-6.24 画面素材が LCD スクリーンである場合があります

sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd

15. ユーザーの注意、推奨モデル

フォローファンをフォローファン

相互フォロー:

    悲しい 1: フォロー 2
  • 追加 2: ファン 1
  • 追加 1: ファン 2
  • 追加 2: フォロー 1
私はフォローしています 他の人も彼をフォローしています (交差点を通過):

    sinter 1:フォロー 2:ファン
知り合いかもしれない人:

  • 用户1可能认识的人(差集):sdiff 2:follow 1:follow
  • 用户2可能认识的人:sdiff 1:follow 2:follow

16、排行榜

id 为6001 的新闻点击数加1:

zincrby hotNews:20190926 1 n6001

获取今天点击最多的15条:

zrevrange hotNews:20190926 0 15 withscores

Redis はどこで使用できますか? 16 の一般的な使用シナリオを共有

Redis 用的好,加薪少不了

原文地址:https://juejin.cn/post/6994229128534687781

作者:码猿技术专栏

更多编程相关知识,请访问:编程视频!!

以上がRedis はどこで使用できますか? 16 の一般的な使用シナリオを共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は掘金--码猿技术专栏で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。