reids実践基礎

4620 ワード

一、reids実践基礎


1、キャッシュシステムとRedis
キャッシュシステム:
①要求=』②業務計算=』③データの読み書き(cache<=>db)④テンプレートレンダリング=』⑤出力Redis-データベースの圧力を緩和または引き継ぐ
  • データベースを調べずにデータベースを調べることができる
  • 通常のデータを格納
  • データベースプロセスshow processlist
  • の表示
  • クエリー条件が複雑なデータをredisにキャッシュすることで、データベースの読み書きを著しく低減することができ、データベースの圧力
  • を低減することができる.
  • の動作は原子的特徴
  • を有する.
  • 原子操作:データの信頼性、操作ミスのロールバックを保証し、競争類業務の実現
  • をサポートした.
    Redisのメリット:
  • 常駐メモリの読み書き性能が優れ、ハードディスクIO
  • よりはるかに優れている.
  • 多様なデータ構造をサポート多様なビジネスニーズを実現する
  • は、ハードディスク(HDD)サービスの再起動時にデータを自動的に保存することができる
  • .
    daemonize yes     
    port 6379    
    pidfile /var/6379.pid

    redis-cli 6379 shutdown redisクライアント終了
    クライアント接続redisインストールに対応する拡張操作key value型データset get del exists setnx(存在しない場合は設定)キー名は、一般的にモジュールの大きいものから小さいものまで設計され、コロンで区切られます.
    hashタイプデータhset hget hdel hexists hsetnxhashタイプキーの削除は、各fieldキャッシュがデータベースから独立していることを一つ一つ削除する必要があります.すべてのデータが遅延を受け入れるわけではありません.常にデータの一貫性に注意してください.
    Listタイプのデータlset llen lrange ltrim lpop rpush lpop rpインスタンス:操作ログの記録と読み取り
    setタイプのデータsadd smembers scard spop sdiff
    2、Redisキャッシュケース
    天気の通常のキャッシュをキャッシュして、key weaher:city:dateクエリーを設定する時に先にkeyが存在するかどうかを調べて、直接返して、先に要求するインタフェースが存在しないで、更にこのkeyをキャッシュして1つの同期インタフェースを設定することができて、10分ごとに1回呼び出して、遠隔インタフェースのデータとの同期pv&uvincrByの自己増加pvを維持します:string key valueを使ってkeyインタフェースを設定して1回incrByプラス1を呼び出してget($key)uvsetを取得してkey呼び出しインタフェースを設定して、IPアドレスを使用して、setにipアドレスを追加し、set要素の個数を計算します.
          :    mysql     redis,    redis     ,          mysql ,        

    ページング最適化:limitではなくidに基づいてページングする方法
    3.Redisメッセージキュー
    概要:メッセージキュー時のメッセージの順序集合シーン:ウェブサイトのトップページのPV統計と従来の直接updateテーブルの表示、大同時の場合はテーブルをロックしやすく、redisメッセージキュー:Redisはrpushスクリプトを要求するたびにpvlog set pvを均一に処理してget pvを表示する
          
        (      ,          ,  )
        (               )

    メッセージ・キューの実装方法は多く、redisを使用して実装される最も主要な利点は、単純で迅速なredisによるメッセージ・キューの実装には2つの方法があります.
  • リスト
  • に基づく
  • publish/subscribe
  • に基づく
    redis実装メッセージキューlistベースのメッセージキュー実装方式の特徴:
  • redisの容量は、トラフィックベアラ能力
  • を決定する.
  • 各情報は、1つの消費者によってのみ消費される
  • .
  • 一般的にはメッセージをすべて消費します
  • 失敗したメッセージを処理するには、フォールトトレランス
  • を行う必要があります.
    publish/subscribeベースのメッセージキュー実装方式は、パブリッシュサブスクリプション実装pv統計に基づいてサブスクリプションモードではsubscribe、psubsubscribeなどのサブスクリプションに関連する操作しか実行できず、他の操作を実行するにはredisインスタンスを再インスタンス化する必要がある
      :
                
      redis             
    redis           :
      list 
      subscribe/publish

    二、Redisキャッシュの概要


    Redisは完全に無料で、BSDプロトコルを遵守し、高性能のkey-valueデータベースです.
  • シンプルなkey-valueストレージで、パフォーマンスは極めて高い
  • Redisはより多くのデータ構造を有し、より豊富なデータ構造
  • をサポートする.
  • Redisは、データ永続化およびデータリカバリ
  • をサポートする
  • Redisのすべての動作は原子的
  • である.
  • サーバはAUTHパスワード検証
  • をサポートする
    Redisフィールドタイプ
  • String文字列
  • Hashハッシュ
  • Listリスト
  • Set無秩序集合
  • Zset秩序集合
  • Stringタイプ
    最も一般的なデータ型は、バイナリ、jsonオブジェクトの最大容量512 M などの任意のタイプの文字列であってもよい
    Hashタイプ
  • PHPのarrayに似ている
  • は複数のkey-valueを保存することができ、各k-vは文字列タイプ
  • である.
  • 最大2^32-1フィールド

  • Listタイプ
  • の実現形態は双方向チェーンテーブル
  • である.
  • は、順序付けされた文字列リスト
  • を格納するために使用される.
  • キューの両端から要素
  • を追加およびポップアップする.
  • は、メッセージキュー
  • に特に適する.
           
     1、       ms_status 1     0    
     2、     list
     3、      ,              
     4、    ,                

    Setタイプ
  • セットの各要素は異なる
  • である.
  • 要素は最大2^32-1
  • です.
  • 要素には順序がない
  •     sdiff
        sinter
        sunion

    Zsetコレクション
  • 集合は秩序ある
  • である.
  • は挿入、削除をサポートし、要素が
  • 存在するかどうかを判断する.
  • は、スコアが最も高い/最も低い前のN個の要素
  • を取得することができる.

    三、Redis運行メンテナンス

  • 持続化
  • RDBが指定した時間間隔でデータスナップショットを保存する利点:バックアップforkのサブプロセスでバックアップを行うのに適している.メインプロセスはIO操作がなくてビッグデータセットを回復する時の速度が速い欠点:特定の条件の下で一回の持続化を行って、データの巨大なデータを失いやすい時、保存時に性能の問題が発生する
    AOFはまず操作ログの末尾にコマンドを追加し、すべての履歴を保存する
    利点:データが非常に完全で、フェイルオーバ損失データが少ないため、履歴操作を処理できる欠点:ファイルの体積が大きい速度はRDBより低く、フェイルオーバ回復速度が遅い
  • Redis
  • を合理的に使用する
    メモリがいっぱいになるのを防止してタイムアウト時間を設定して大きすぎるファイルを保存しないであまり常用しないファイルを保存しないで使用効率を高めて合理的に異なるデータ構造のタイプを使用して正則処理あるいは一括操作Hash,setなどを慎む
    3、Redis Cluster
  • 複数のRedisインスタンスが共同で
  • を実行する.
  • slotスロット分割データを採用すると、CRC 16と16384が型取り後に
  • 分散する.
  • 主従構造と選挙アルゴリズムは、各ノードの信頼性
  • を保証する.
  • クライアントは、いずれかのnodeに接続する動作
  • を行うことができる.
    構造:
  • すべてのredisノードは互いに相互接続され、内部ではバイナリプロトコルを用いて伝送速度と帯域幅
  • を最適化する.
  • ノードのfailは、クラスタの半数を超えるノードによって失効が検出されたときに有効になる
  • である.
  • クライアントはredisノードに直結し、中間proxy層を必要とせず、クライアントはクラスタのすべてのノードを接続する必要がなく、クラスタのいずれかの利用可能なノードを接続すれば
  • である.
  • redis-clusterはすべての物理ノードを0-16383 slotにマッピングし、clusterはnodeslotvalue
  • のメンテナンスを担当する.
    注意事項:
             
             
          
    key     
      6