web-dev-qa-db-ja.com

RedisまたはEhcache?

次の環境により適しています。

  1. 永続性は強制ではありません。
  2. 複数のサーバー(Ehcacheでは、キャッシュの同期が必要です)。
  3. まれな書き込みと頻繁な読み取り。
  4. 比較的小さなデータベース(非常に少ないメモリ要件)。

現在、私の頭の中にあるものを注ぎ出します。私はこれらについて間違っているかもしれません。

Redisは別のサーバー(?)を必要とし、Ehcacheはローカルキャッシュを提供するため、より高速である必要がありますが、サーバー間でキャッシュを複製します(?)。 Ehcacheを使用すると、何らかのキャッシュの更新後にすべてのキャッシュを更新できます。

私の質問は、私が言及した環境にどちらがより適しているでしょうか?
パフォーマンスが向上するのは誰か、または他のパフォーマンスを上回るシナリオとは何ですか?

前もって感謝します。

16
Sachin Sharma

Redisは共有データ構造と考えることができますが、Ehcacheはメモリブロックシリアル化されたデータオブジェクトを格納します。これが主な違いです。

Redisは共有データ構造として、事前定義データ構造(StringListSetetc )in one language別の言語で取得します。これは、プロジェクトがmultilingualの場合に便利です。たとえば、Javaバックエンド側、およびPHP the front side。共有キャッシュにRedisを使用できますが、事前定義されたデータ構造のみを保存でき、Javaオブジェクトを挿入できません。

プロジェクトがJavaのみである場合、つまりmultilingualではない場合、Ehcacheは便利なソリューションです。

34
smallufo

EhCacheスケーリングの問題に対処し、フェイルオーバーなどでそれを管理するためのリソースが必要になります。Redisの利点 EhCacheを超える場合:

  1. Node発見と同期のために、実績のあるゴシッププロトコルを使用します。
  2. AWS ElastiCacheAzure Redis Cache などの完全に管理されたサービスの可用性。このようなサービスはRedisの完全な自動化、サポート、および管理を提供するため、開発者はデータベースを維持せずにアプリケーションに集中できます。
  3. 大量のメモリを適切に処理します(Redisは、数百ギガバイトのRAM単一マシン上で)を管理できることを知っています。Javaのようなガベージコレクションには問題ありません。

そして最後にJava開発者向けのRedisクライアント- Redisson
Redissonは、多くのJavaフレンドリーオブジェクトRedisの上にを提供します。

  • セットする
  • ConcurrentMap
  • リスト
  • キュー
  • デケ
  • BlockingQueue
  • BlockingDeque
  • ReadWriteLock
  • セマフォ
  • ロック
  • アトミックロング
  • CountDownLatch
  • 公開/購読
  • ExecutorService
  • などなど...

Redissonは、マップ構造に対してローカルキャッシュをサポートします。これにより、読み取り操作のパフォーマンスが向上します45x

こちらが 記事 EhCacheからRedisへの移行のパーソナルキャピタル会社の経験を説明しています

2