問題タブ [cachemanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Play キャッシュ (Scala) を使用したモジュールの単体テスト
Scala で Play キャッシュを使用してモジュールを単体テストするためのガイダンスを探しています。データベースにクエリを実行し、静的データを取得して Play のキャッシュに保存するメソッドがあります。単体テストの作成中に、次のエラーが表示されます。
カスタム プロバイダのエラー、java.lang.IllegalStateException: CacheManager がシャットダウンされました。使用できなくなりました。
このエラーが表示されるように、scala 単体テストを破棄する必要はありません。なぜこれが起こっているのかについてのアドバイスは素晴らしいでしょう。
また、これを解決するための提案は目を見張るものがあります。私が考えることができる 1 つの方法は、追加のパラメーターを持ち、テスト/非テスト ワークフローのパラメーター値に応じてキャッシュを有効/無効にすることです。しかし、それが唯一の方法ですか。テストのためだけにキャッシュのカスタム実装を渡す必要がありますか?
azure - 再起動後に Redis キャッシュへの接続が失敗する - Azure
次のコードを使用して、キャッシュ (メモリ内および Redis) に接続しています。
settings
.WithSystemRuntimeCacheHandle()
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime)
.And
.WithRedisConfiguration(CacheManagerRedisConfigurationKey, connectionString)
.WithMaxRetries(3)
.WithRetryTimeout(100)
.WithJsonSerializer()
.WithRedisBackplane(CacheManagerRedisConfigurationKey)
.WithRedisCacheHandle(CacheManagerRedisConfigurationKey, true)
.WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime);
正常に動作しますが、マシンが (ホストしている Azure によって自動的に) 再起動され、再起動後に Redis への接続が次の例外で失敗することがあります。
Connection to '{connection string}' failed.
at CacheManager.Core.BaseCacheManager`1..ctor(String name, ICacheManagerConfiguration configuration)
at CacheManager.Core.BaseCacheManager`1..ctor(ICacheManagerConfiguration configuration)
at CacheManager.Core.CacheFactory.Build[TCacheValue](String cacheName, Action`1 settings)
at CacheManager.Core.CacheFactory.Build(Action`1 settings)
Redis FAQ ( https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq ) の部分によると、「クライアントがキャッシュから切断されたのはなぜですか?」再デプロイ後に発生する可能性があります。
質問は
- 再デプロイ後に接続を復元するメカニズムはありますか
- 接続を初期化する方法に何か問題がありますか
接続文字列は問題ないと確信しています
c# - CacheManager - x 分ごとまたは有効期限が切れたときにキャッシュを更新する
CacheManagerを使用して、遅いソースから取得するのに長い時間がかかる可能性があるデータがキャッシュ インスタンスに含まれるこのシナリオを実装するには、どうすればよいでしょうか?
キャッシュが読み込まれるまでユーザーを待たせたくない (最初の読み込みは気にしない)
2 つの方法が考えられますが、CacheManager で可能かどうかはわかりません。
「スケジュールされた」更新
- 60 分後に期限切れになるようにキャッシュ インスタンスを設定する
- 15 分ごとに、キャッシュ インスタンスを更新するスケジュールを設定します
期限切れでリフレッシュ
- キャッシュ インスタンスの有効期限が切れると、データを更新するイベントを発生させます。データの更新中 (または更新に失敗した場合)、キャッシュ インスタンスは「古い」データを返します。
Cachemanager で技術的に可能なことは何ですか?また、どのアプローチが最も効果的ですか?