なぜ、RedisのRedisのアプリケーションシナリオ

まず、万能薬でフィリピンの関係部門データベースRedisのではありません

インタビューでは、比較は、多くの場合、RedisのとMemcacheのの長所と短所に頼まれ、両方の個人的な感触はとの比較には適していません、のRedis:非リレーショナルデータベースキャッシュは、Memcacheのを他のことを行うことができないだけでも可能である:キャッシングはのみ行われます。多くの場合、Redisのは、キャッシュされたアプリケーション・シナリオの最も広い範囲によるところが大きい、私たちはこれら両者を比較してみましょう。

1.2 Redisのはなぜすることができます
  1. キャッシュは、それは最高の今日Redisの使用シナリオを知られている疑いがあります。また、サーバーのパフォーマンスが非常に有効である強化します。

  2. (MySQLのOracleのような)従来のリレーショナルデータベースこれを行う事は非常に面倒であり、データ構造を取得するためのRedis SortSet(順序集合)の使用が簡単なことができますを使用してチャート、。

  3. MySQLの、頻繁に読み取りおよび書き込みで、このような操作はかなりの圧力をもたらす場合電卓/スピードリミッター、アトミックインクリメント操作でRedisの使用は、我々は、そのようなアクセスへのユーザーの数など、賞賛の同様のユーザーポイントの数をカウントすることができます。知事の典型的な使用シナリオでは、不要なクリック狂気の圧力からユーザーを防ぐために、アクセスを購入する際に一般的に使用される周波数のAPIを利用者を制限することです。

  4. 友情は、そのような交差点、労働組合、相違点などを求めているように、一連のコマンドを使用します。これは、簡単にいくつかの共通の友人、共通の利益このような機能を得ることができます。

  5. 単純なメッセージキューは、独自のRedisのは、パブリッシュ/サブスクライブ・モデルをすることに加えて、我々はまた、のような、キューイングメカニズムを実装するためにリストを使用することができます。到着通知、メッセージクラスを送信するための需要は、高い信頼性を必要としませんが、非常に大規模なDBをもたらします圧力は、リストの非同期デカップリングを行うことができます。

  6. PHPのセッション共有は、例えば、デフォルトのセッションは、クラスタサービスならば、同一のユーザが頻繁にユーザログインにつながることができ、異なるマシン上で倒れて、ファイルサーバに保存され、後にRedisのセッションの保存を使用して、ユーザーに関係なくそのマシン上の滝は、セッションに対応する情報を得ることができるようになります。

  7. いくつかの頻繁にアクセスされるデータ、リレーショナルデータベースに置かれた場合に頻繁にアクセスされるデータは、各クエリのコストは素晴らしいものだが、Redisの中にメモリに配置されRedisのは、非常に効率的にアクセスできるため

ベター1.3のRedisを行うにはありません

あまりにも多くの場合、永続Redisのサービスが増加しますので、Redisのでは、それが永続性をサポートすることができますが、利用者の基本的な情報を保存しますが、その永続化ソリューションは、その床を保証するものではない、ともパフォーマンス低下のRedisをもたらす可能性があります圧力。

資源の無駄であるという結論は、あまりにも多くのデータであるデータのアクセス頻度が非常に低いトラフィックで使用Redisのには適していません、データはコストが大きすぎる増加である、アクセス頻度が低すぎる、メモリに保存されています。

Redisのを使用する理由

いくつかのシナリオは、上記のキャッシュがMemcacheの、セッション共有MySQLは、メッセージキューなどがRabbitMQのを使用することができ、実装することができ

理由:
ので、高速メモリに完全に基づいて高い並行性の問題をファイルディスクリプタのアドレスを使用して、C言語、ネットワーク層を用いて、シングルスレッドモデルは、不必要なコンテキストスイッチおよび競合条件を回避する;注:単一スレッド・ネットワークは、この要求に言われていますそれは永続的なスレッド/プロセスを再開される要求とクライアント要求の処理モジュールが処理されます

豊富なデータタイプ、Redisの一般文字列、ハッシュ、リスト、セット、SortSetで使用されるデータ型の8種類、これらの5つの、データを整理する主要な方法に基づいて、すべてがあります。データの各タイプはの大半のニーズを満たすために、運用コマンドの富を提供します

GitHubのでRedisのオープンソースコードは、コードの読み取りに時間がかかることができるようになります、非常にシンプルかつエレガントであり、コンパイルしてインストールすることも非常に簡単です、他のシステムに依存している、さまざまなクライアント言語のサポートは非​​常によくもありません。また、マスター・スレーブのレプリケーションが可能として配布、可用性の高いことができ、トランザクション、永続性をサポートしています。

人生はまだ意味をなします。それはまだ存在する理由を探している必要があります
 
まず、万能薬でフィリピンの関係部門データベースRedisのではありません

インタビューでは、比較は、多くの場合、RedisのとMemcacheのの長所と短所に頼まれ、両方の個人的な感触はとの比較には適していません、のRedis:非リレーショナルデータベースキャッシュは、Memcacheのを他のことを行うことができないだけでも可能である:キャッシングはのみ行われます。多くの場合、Redisのは、キャッシュされたアプリケーション・シナリオの最も広い範囲によるところが大きい、私たちはこれら両者を比較してみましょう。

1.2 Redisのはなぜすることができます
  1. 缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;

  2. 排行榜,在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合)数据结构能够简单的搞定;

  3. 计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;

  4. 好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;

  5. 简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;

  6. Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。

  7. 一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问

1.3 最好别用redis 来做

用Redis去保存用户的基本信息,虽然它能够支持持久化,但是它的持久化方案并不能保证数据绝对的落地,并且还可能带来Redis性能下降,因为持久化太过频繁会增大Redis服务的压力。

总结就是数据量太大、数据访问频率非常低的业务都不适合使用Redis,数据太大会增加成本,访问频率太低,保存在内存中纯属浪费资源。

使用redis的理由

上面所说的一些场景, 缓存可以用Memcache,Session共享能用MySql来实现,消息队列可以用RabbitMQ等,

理由:
完全基于内存所以速度很快,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件; 注意:单线程仅仅是说在网络请求这一模块上用一个请求处理客户端的请求,在持久化时它就会重开一个线程/进程去进行处理

丰富的数据类型,Redis有8种数据类型,常用的有 String、Hash、List、Set、 SortSet 这5种,都是基于键值的方式组织数据。每一种数据类型提供了非常丰富的操作命令,可以满足绝大部分需求

Redis的代码开源在GitHub,代码非常简单优雅,愿意花时间就能去看懂;它的编译安装也很简单,不存在其他系统依赖;各种客户端的语言支持也是非常完善。另外它还支持事务、持久化、主从复制让高可用、分布式成为可能。

おすすめ

転載: www.cnblogs.com/Json159/p/11891956.html