Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Redisにはいくつかの誤解があります

Redisにはいくつかの誤解があります

  

数日前、Weiboには大きなシステム障害があり、多くの技術的な友人たちが心配していました。要約の一般的な範囲、ジェームズの最初の経験「失敗のための設計」は、すべてのインターネットアーキテクチャの成功への鍵です。インターネットシステムの工学理論は実際には非常に単純で、Jamesの論文の内容は理論を記述することはほとんど不可能ですが、実際の経験を共有することが多く、各企業の理解と実行がコンポジションの失敗を決定します。

オフトピックの後、私は最近Redisを勉強しました。昨年、MemcacheDB、Tokyo Tyrant、Redisのパフォーマンステストを行いましたが、これまでのところ、このベンチマーク結果はまだ有効です。昨年、私たちが戻ると、Cassandraが消えてから(Twitterが主な業務で使用を停止している)HBaseが登場するまで(Facebookの新しいメールボックス事業ではHBase(2)が使用されます)。 Redisを見ると、1万行を超えるソースコードを含むこのプログラムには、不思議で未踏の機能がたくさんあります。 Redisのパフォーマンスは驚くべきもので、中国のトップ10のWebサイトのサブ製品は1つのRedisでストレージとキャッシュの要件を満たすと推定されています。パフォーマンスの印象に加えて、業界は一般にRedisについて特定の誤解をしています。この記事では、議論のポイントをいくつか紹介します。
1. Redisとは

この問題の結果はRedisの使い方に影響します。 Redisがキーバリューストアであると考えるのであれば、MySQLの代わりにそれを使用することができます;それが永続キャッシュであると思うのであれば、頻繁にアクセスされる一時的なデータを保存するだけです。公式WebサイトにあるRedisのサブタイトルは、Posixシステム用にANSI-Cで書かれた、ネットインターフェースを内蔵した永続的なKey-Valueデータベースで、この定義はKey-Valueストアに偏っています。その高性能はメモリ操作の基礎に基づいているため、Redisはメモリデータベースであるという意見もあります。 RedisはList、Setなどの複雑なデータ機能をサポートするため、Redisはデータ構造サーバーであると考える人もいます。 Redisの役割についてのさまざまな解釈によって、Redisの使用方法が決まります。

インターネットデータは現在、リレーショナルデータベースとキー値の2つの保存方法を使用しています。しかし、これらのインターネットサービスは、ソーシャルプラットフォームでのユーザーの関係など、これら2種類のデータ自体には属していません。リレーショナルデータベースストレージを使用する場合はリストです。複数行のレコード形式に変換する必要があります。多くの冗長データ、各行はいくつかの重複情報を格納する必要があります。キーの値を使って保存すると、変更や削除が面倒なので、すべてのデータを読み書きする必要があります。 Redisは、メモリ内でさまざまなデータ型を設計し、ビジネスがこれらのデータ構造に高速でアクセスできるようにし、永続ストレージを気にする必要がなくなり、最初の2種類のストレージでは迂回が必要になるという問題を解決します。
2. RedisはMemcacheよりも高速にはなれません

多くの開発者は、RedisはMemcachedよりも高速にはできず、Memcachedは完全にメモリをベースにしています。 Memcachedよりも速いかもしれません。しかし、テスト結果は基本的にRedisには絶対的な利点があるということです。私はこの理由について考えてきました、そして私が今考える理由はこれらです。

  • Libeventは、Redisがlibeventを選択しないという点でMemcachedと異なります。 Libeventは、汎用性に対応するための巨大なコードを持ち(現在のRedisコードはlibeventの1/3未満です)、特定のプラットフォーム上で多くのパフォーマンスを犠牲にします。 Redisはlibeventの2つのファイルで独自のepollイベントloop(4)を実装しました。業界の多くの開発者はまた、Redisはlibevの代わりに別のlibevent高性能を使用することを提案しました、しかし著者はRedisは小さくて頼りになるべきであると主張します。印象的な詳細は、Redisをコンパイルする前に./configureを実行する必要がないということです。
  • CASの問題CASは、競合がMemcachedのリソースを変更するのを防ぐための便利な方法です。 CASの実装ではキャッシュキーごとに隠しcasトークンを設定する必要があります。caseはトークンをインクリメントするたびに値のバージョン番号を変更するため、CPUとメモリのオーバーヘッドは2倍になります。そして、QPS後、これらの何万ものコストが、両者間でわずかなパフォーマンスの違いをもたらすでしょう(5)。
  • Copyright © Windowsの知識 All Rights Reserved