ホームページ >データベース >Redis >Redis はどこで使用されますか?

Redis はどこで使用されますか?

步履不停
步履不停オリジナル
2019-06-25 11:45:282482ブラウズ

Redis はどこで使用されますか?

1. 高い同時実行性のキャッシュ/共有セッション:

UserInfo getUserInfo (長い ID) {}

Get:

userRedisKey = "user:info:" id;

value = redis.get(userRedisKey);

if (value != null) {

userInfo = deserialize(value);

return userInfo;

redis.setex(userRedisKey, 3600, Serialize(userInfo));

文字列を使用したシリアル化データの保存は 3 次元ではありませんhmset に変換してハッシュ構造として保存できるため、より直感的にアクセスできるようになります。 # setnx は存在しない場合にのみ正常に設定でき、残りは待つだけです。シングルスレッド

#3. カウンタ増加はシングルスレッドであるため、cas などよりも CPU 消費量が少なく、パフォーマンスが高くなります

long incrVideoCounter (long id) {

key = "video:playCount:" id;

4. stack/queueを実装します

スタック: lpush lpop

キュー: lpush rpop

5. フロー制御/レート制限

PhoneNum = "12345678999";

key = "shortMsg:limit:"phoneNum;

isExists = redis.set( key, 1, "EX 60", "NX");

if (isExists != null || redis.incr(key) //

##} を渡します。それ以外の場合は { //

} は渡しません

6.

lpush brpop を使用してブロッキング キューを実装します。プロデューサーは lpush を介してリストの左端から要素を挿入し、複数のコンシューマーがブロックしてその末尾の要素を取得します。 brpop の右端からキューを作成します

7. 各ユーザーは自分の記事を持っています。今度は記事リストをページに表示したいと考えています。

hmset 記事:1 タイトル xx コンテキスト XXXX

lpush ユーザー:1:記事 srticle:1 記事:3

記事 = lrange ユーザー:1:記事 0 9

{articles}

hgetall {article}

8. フォローしていいね

いいね: zincrby ユーザー:ranking:2016_03_15 mike 1

キャンセル: zrem user:ranking:2016_03_15 mike

上位 10 ユーザーにいいね! : zrevrangebyrank user:ranking:2016_03_15 0 9

ユーザーを表示情報とスコア: hgetall user:info:tom / zscore user:ranking:2016_03_15 mike / zrank user:ranking:2016_03_15 mike

9. ビットマップはビッグデータ間の関係を計算しますセット

10.ランキング

マイクがビデオをアップロードし、3 件のいいねを受け取りました zadd user:ranking:2016_03_15 mike 3

他の人がいいね! zincrby user:ranking:2016_03_15 mike 1

11. 一緒にフォローする

ユーザーにフォロー タグを追加するsacd user:1:tags tag1 tag2

タグにユーザーを追加する sacd tag1:uses user:1

共通の注意点 user:1:tags user:2:tags

sinter/sunion/sdiff

12. 公開および購読

ビデオを購読:変更:

ビデオを公開: video1,video2

のビデオの "video1,video2"

を変更しました (ビデオ)

各データ型は、さまざまな基礎となるデータに対応します構造の実装 (オブジェクト エンコーディング)。データのサイズ、長さ、シナリオなどによって切り替えて効率を高めることができます

永続的 RDB (子プロセスの作成、バイナリ ファイル、高速リカバリ、リアルタイム性が十分ではありません) /AOF (追加のみ。テキスト ファイル、リアルタイム書き込み操作は最初に aop_buffer を実行し、次にディスク書き込み間隔を設定してディスクに書き込み、特定のサイズに達したらマージします)

バッチ hmget およびその他の操作は hscan などに変換する必要がありますプログレッシブ トラバーサル メソッド、そうでない場合はブロックされやすい

バッファリング: クライアント バッファリング (入力/出力)、コピー バックログ バッファ、Aof バッファ

コピー: フル/増分コピー オフセット/コピー バックログ バッファ (書き込みコマンドは同時にスレーブ サーバーに送信されます。また、先入れ先出しキューも維持されます。これは、メイン サービスが最後に伝播されたコマンドも保存することを意味します)/ID

sentinal: 高可用性を実現するために、これは特別な Redis ノードです。クラスターを自分で構成し、ハートビートやその他のメカニズムを通じて Redis データ クラスターを監視できます。ノードに障害が発生して利用できなくなった場合でも、適切なタイミングで検出でき、自動的に移行

cluster: 分散クラスター、フォールト トレラント リーダーの選択など。物理ノードを 16383 スロットにマッピングしてダイナミクスを実現する

Redis 関連の技術記事の詳細については、Redis チュートリアル 列にアクセスして学習してください。

以上がRedis はどこで使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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