Redis はどこに適用できますか?この記事では、Redis の一般的な 16 の使用シナリオをまとめて紹介します。
#[関連する推奨事項:
Redis ビデオ チュートリアル]
1. キャッシュ
文字列型
例: ホット データ キャッシュ (レポート、有名人の不正行為など)、オブジェクト キャッシュ、全ページ キャッシュ、ホット データを改善できるアクセス データ。
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. ショッピング カート
文字列またはハッシュ。文字列で実行できるすべてのハッシュは実行できます
キー: ユーザー 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
ランダムな値
12. いいね、サインイン、クロックイン
上記の 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. 製品タグ
古いルールでは、tags:i5001 を使用して製品のすべてのタグを管理します。
sadd tags:i5001 絵は鮮明で繊細ですsadd tags:i5001 True color 鮮明なディスプレイsadd tags:i5001 プロセスは素晴らしいです-
14. 製品の選択
// 获取差集
sdiff set1 set2
// 获取交集(intersection )
sinter set1 set2
// 获取并集
sunion set1 set2
ログイン後にコピー
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
私はフォローしています 他の人も彼をフォローしています (交差点を通過):
知り合いかもしれない人:
- 用户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 用的好,加薪少不了
原文地址:https://juejin.cn/post/6994229128534687781
作者:码猿技术专栏
更多编程相关知识,请访问:编程视频!!
以上がRedis はどこで使用できますか? 16 の一般的な使用シナリオを共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。