私の目の中のRedis


引用するMicrosoft To-Doを開くと、Redisの学習計画がまだそこに横たわっていることがわかりました.
実は私のRedisに対する理解は、私がこの単語を知っているレベルにとどまっています.
勉強する
概要
もともとこのRedisに興味がなかったのは、キャッシュされたデータベースではないでしょうか.前回spring-redisが構成されたとき、これにはユーザー名がありませんでした.
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:

上記のように構成されているのは、ホスト、ポート、パスワードのみで、通常のMySQLまたは他のデータベースとは異なります.Redisは、ANSI Cを使用して作成されたオープンソース、サポートネットワーク、メモリベース、オプションの持続性のキー値ペアを使用してデータベースを格納します.
よく知られているのはRedisのキャッシュで、RedisCで記述され、異常に速く動作します.ディスクストレージがサポートされているメモリデータベースです.
データの変化が速く、メモリ容量に適したデータベースサイズのアプリケーションに適しています.
使用シーン:株価、データ分析、リアルタイムデータ収集、リアルタイム通信.NoSQL RedisNoSQLNoSQL = Not Only SQLに属する.
現在、データ量はますます大きくなり、従来のリレーショナル・データベースでは、このようなビッグデータのニーズに対応できません.
たとえば、リレーショナル・データベースを使用してモーメンツを格納すると、その日にどのくらいのデータが生成されますか?また検索するとデータベースが死んでしまうのではないでしょうか.
これは私が前に注目した投稿を思い出しました:テンセントの微信のバックグラウンドデータベースはいったいどのように設計されていますか?無知な人が歓談して、最後に公式の友达が見られないようで、返事:誰があなたたちに微信用の関係型データベースを教えてくれましたか?
一般的なリレーショナル・データベースは、クエリーのみでは効率的ですか?読み書きを含めると?それは、従来のデータベースが高同時性に耐えられない可能性があります.
重要なのは、リレーショナル・データベースが拡張できないことです.データ間には関係があるので、データベースの拡張はバックグラウンド・サービスの規模を拡張するようにサーバを持ち出すほど簡単ではありません.
このように、データ量が日増しに増加している今日、ビッグデータ量と高同時性の難題を解決するために、NoSQLが誕生した.NoSQL製品は主に4種類あります.
を選択します.
特長
代表者
適用シーン
キー値ペア記憶
高速クエリーが可能ですが、格納されているデータは構造化されていません.Redis
主にビッグデータの処理に使用される高アクセス負荷のコンテンツキャッシュ
カラムストレージデータベース
検索速度が速く、拡張性が高く、分散型の拡張が容易ですが、機能は相対的に限られています.HBase
分散ファイルシステム
ドキュメントデータベース
データ構造の要件が厳しくなく、クエリーのパフォーマンスが高くなく、統一的なクエリー構文が欠けています.MongoDB Webアプリケーション(一般的なKey-Valueと比較して、Valueは構造化されている)
グラフィックデータベース
図構造関連アルゴリズムを利用するが,図全体を計算しなければ結果が得られず,分布しにくいNeo4j
ソーシャルネットワーク、推奨システム、リレーショナルスペクトルの構築に専念
これらのデータベースの名前は多かれ少なかれ聞いたことがあるのではないでしょうか.今日になってやっと、それらの役割が本当に分かりました.それぞれの特長があります.ビジネスシーンに基づいて動的に選択する必要があります.FacebookのメッセージストレージはHBaseデータベースを採用し、ビッグデータのランダム、リアルタイムアクセスをサポートしています.NoSQLデータ間は関係ないので拡張しやすく、読み書き性能も高く、同時シーンに適しています.
歴史2008年、イタリアのある創業会社MerziaMySQLに基づくウェブサイトのリアルタイム統計システムLLOOGGを発売した.
間もなく、創始者のSalvatore SanfilippoMySQLの性能に失望し、自分でデータベースを書くことにした.牛人は牛人で、私たちはMySQLの性能を疑っても、書こうとしても書けないでしょう?!2009年、Salvatore Sanfilippoはデータベースの作成を完了しました.これがRedisです.Salvatore SanfilippoRedisをオープンソースにし、今日までRedisの開発を行ってきました.私たちがよく知っているGithubStackOverflow、新浪微博などの会社はRedisのユーザーです.
キャッシュ
従来のキャッシュコードはこのように書く必要があり、冗長で重複したコードです.
ValueOperations valueOperations = redisTemplate.opsForValue();

logger.info("  Redis    Key");
if (redisTemplate.hasKey(url)) {
    logger.info("Redis  , Redis   ");
    return valueOperations.get(url);
}

logger.info("  Get  ");
ResponseEntity response = restTemplate.getForEntity(url, String.class);

logger.info("    ");
valueOperations.set(url, response.getBody(), TIME_OUT, TimeUnit.MINUTES);
Spring AOPに感謝します.注釈を使用してキャッシュ機能を実現できます.
@Cacheable("cacheName")
public List findAll() {
    return studentRepository.findAll();
}

注記を使用してキャッシュを実現するのは簡単ですが、@Cacheableには多くの高度な使い方があります.後で詳しく説明します.
操作Redisには3つの動作があります.GET:キーに基づいて値を検索します.SET:所与のキー記憶値.DEL:キーの値を削除します.
そしてRedisのデータ構造です.これはしばらく知る必要はありません.結局、現在使用されているのは既製の@Cacheable注釈で、手動でRedisを操作する必要はありません.
コードが海のように深く、ソフトウェアの道は遠い.生命の限られた私たちはすべてのことに精通することはできません.私たちは学習コストと能力の向上の間でバランスを取らなければなりません.
まとめ
だから積み重ねず、千里に至ることもない.小流を積まなければ,川の海になることはできない.騏骥一躍、十歩もできず、