Redisクイックスタート:Redisを初めて認識する
2688 ワード
今日はRedisの入門知識をご紹介します.Redisは、ANSI C言語を使用して作成され、ネットワークをサポートし、メモリベースで持続可能なログ型、Key-Valueデータベースであり、複数の言語のAPIを提供しています.2010年3月15日から、Redisの開発作業はVMwareが主宰している.1、データ型はKey-value型データベースとして、Redisはキー(Key)とキー値(Value)のマッピング関係も提供する.ただし、Redisのキー値は、従来の数値や文字列に加えて、●Lists(リスト)●Sets(集合)●Sorted sets(整列集合)●Hashes(ハッシュテーブル)のキー値のデータ型が、そのキー値がサポートする動作を決定する形式の1つであってもよい.Redisは、リスト、集合、または整列集合のような高度な原子操作をサポートする.また、キー値のタイプが通常の数値である場合、Redisは自己増等原子操作を提供する.2、永続化通常、Redisはデータをメモリに格納するか、仮想メモリを使用するように構成される.2つの方法でデータの持続化を実現できます.スクリーンショットを使用して、メモリ内のデータをディスクに書き込み続けます.またはMySQLのようなログ方式を使用して、更新するたびにログを記録します.前者は性能が高いが、ある程度のデータ損失を引き起こす可能性がある.後者は反対だ.3、マスタスレーブ同期Redisはデータを複数のスレーブライブラリに同期することをサポートし、この特性は読み取り性能の向上に非常に有益である.4、性能はディスクに依存して各更新のデータベースを記録する必要があり、メモリベースの特性は間違いなくRedisに非常に優れた性能をもたらした.読み書き操作の間に顕著なパフォーマンスの違いがあります.5、APIを提供する言語●C●C++●C#●Clojure●Common Lisp●Erlang●Haskell●Java●Javascript●Lua●Objective-C●Perl●PHP●Python●Ruby●Scala●Go●Tcl 6、適用する場合は間違いなく、Redisは新しいデータストレージの構想を切り開き、Redisを使用して、私たちは機能の単調なデータベースに直面する時、どのように象を冷蔵庫に入れるかという問題に精力を置くのではなく、Redisの柔軟で変化の多いデータ構造とデータ操作を利用して、異なる象のために異なる冷蔵庫を構築します.この比喩が好きになってほしい.以下はRedisが適用するいくつかのシーンです.例えば、典型的にあなたのウェブサイトの最新の文章を取ります.以下の方法で、最新の5000件のコメントのIDをRedisのリストセットに置いて、セットを超えた部分をデータベースから取得することができます.LPUSH latestを使用する.commentsコマンドは、リストセットにデータを挿入する挿入が完了したらLTRIM latestを使用する.comments 0 5000コマンドは、最近の5000個のIDだけを永遠に保存し、クライアントがコメントを取得するときに次の論理を使用することができます.
ある分類の最新N条など、異なるフィルタ次元がある場合は、この分類のリストを再構築してIDのみを保存することができます.Redisは非常に効率的です.(2)、ランキングアプリ、TOP N操作を取るこの需要と上の需要の違いは、前の操作は時間を重みとし、これはある条件を重みとし、例えばトップの回数でソートする.この時、私たちのsorted setが出馬する必要がある.ソートする値をsorted setのscoreに設定し、具体的なデータを相応のvalueに設定する.毎回ZADDコマンドを1つだけ実行すればいいです.(3)、期限切れを正確に設定する必要があるアプリケーション例えば、上記のsorted setのscore値を期限切れのタイムスタンプに設定すれば、期限切れのソートによって、期限切れのデータを定期的に消去することができ、Redisの期限切れのデータを消去するだけでなく、Redisの期限切れをデータベース内のデータのインデックスと見なし、Redisで期限切れに削除する必要があるデータを見つけて、データベースから適切なレコードを正確に削除することができます.(4)、カウンタにRedisを適用するコマンドはすべて原子的で、INCR、DECRコマンドを簡単に利用してカウンタシステムを構築することができます.(5)、Uniq操作は、ある期間の全てのデータの排重値を取得するというRedisを用いたsetデータ構造が最適であり、絶えずsetにデータを投げ込むだけでよい.setは集合を意味するため、自動的に排重される.(6)、リアルタイムシステム、反ゴミシステム上記set機能により、端末ユーザが操作を行ったかどうか、その操作の集合を見つけて分析統計比較などを行うことができる.できないことはないが、思いもよらなかった.(7)、Pub/subリアルタイムメッセージシステムRedisを構築するPub/subシステムは、Pub/subで構築された多くのリアルタイムチャットシステムの例のようなリアルタイムメッセージシステムを構築することができる.(8)、構築キューシステムlistを用いてキューシステムを構築し、sorted setを用いて優先度のあるキューシステムを構築することもできる.(9)、キャッシュはもちろん、Memcachedよりも性能が優れ、データ構造が多様化している.
FUNCTION get_latest_comments(start,num_items):
id_list = redis.lrange("latest.comments",start,start+num_items-1)
IF id_list.length < num_items
id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
END
RETURN id_list
END
ある分類の最新N条など、異なるフィルタ次元がある場合は、この分類のリストを再構築してIDのみを保存することができます.Redisは非常に効率的です.(2)、ランキングアプリ、TOP N操作を取るこの需要と上の需要の違いは、前の操作は時間を重みとし、これはある条件を重みとし、例えばトップの回数でソートする.この時、私たちのsorted setが出馬する必要がある.ソートする値をsorted setのscoreに設定し、具体的なデータを相応のvalueに設定する.毎回ZADDコマンドを1つだけ実行すればいいです.(3)、期限切れを正確に設定する必要があるアプリケーション例えば、上記のsorted setのscore値を期限切れのタイムスタンプに設定すれば、期限切れのソートによって、期限切れのデータを定期的に消去することができ、Redisの期限切れのデータを消去するだけでなく、Redisの期限切れをデータベース内のデータのインデックスと見なし、Redisで期限切れに削除する必要があるデータを見つけて、データベースから適切なレコードを正確に削除することができます.(4)、カウンタにRedisを適用するコマンドはすべて原子的で、INCR、DECRコマンドを簡単に利用してカウンタシステムを構築することができます.(5)、Uniq操作は、ある期間の全てのデータの排重値を取得するというRedisを用いたsetデータ構造が最適であり、絶えずsetにデータを投げ込むだけでよい.setは集合を意味するため、自動的に排重される.(6)、リアルタイムシステム、反ゴミシステム上記set機能により、端末ユーザが操作を行ったかどうか、その操作の集合を見つけて分析統計比較などを行うことができる.できないことはないが、思いもよらなかった.(7)、Pub/subリアルタイムメッセージシステムRedisを構築するPub/subシステムは、Pub/subで構築された多くのリアルタイムチャットシステムの例のようなリアルタイムメッセージシステムを構築することができる.(8)、構築キューシステムlistを用いてキューシステムを構築し、sorted setを用いて優先度のあるキューシステムを構築することもできる.(9)、キャッシュはもちろん、Memcachedよりも性能が優れ、データ構造が多様化している.