- 私は現在awscに自動拡張機能を持っていますので、7から12のサービスを実行できます。
cache_client.Set<T>(generate_key<T>(key), values, TimeSpan.FromSeconds(ttl.Value));
は私がやっているキャッシュエントリを取得するには:私のクライアントマネージャーの場合
- は、私は私がやっているキャッシュエントリを設定する
redis.GetCacheClient();
をやっている私のクライアントのためにbuilder.register<IRedisClientsManager>(c => new PooledRedisClientManager(conection));
- をしています:
using (var read_only_client = this.redis.GetReadOnlyClient()) { return read_only_client.GetValue(generate_key<T>(key)); }
ISSUE =>私は、無効なキャッシュ値不正な形式のJSONと見当違いのテキストを取得しています。
質問=>キャッシュの値を設定または取得する前にRedisのロックを使用する必要があるため、無効なキャッシュの値が表示されます。
私が考えることができるのは、シングルトンとしてICacheClientを登録していないことだけです。私はredis.GetCacheClient()をやっています。私のクラスのコンストラクタで(クラスは静的ではありません)。しかし、それは問題ではないはずですか? 私はいつもそこに読み取りを除いてICacheClientを使用するが、私は(VAR read_only_client = this.redis.GetReadOnlyClient()){ リターンread_only_client.GetValue(GENERATE_KEY(キー))を使用して、使用して でそれをラップしています。 } –
私が見た別のことは、私は2つのレジスタを自分のキャッシュと別の1つのRedisMQServerと異なる接続文字列で持っていることです。それは問題になる可能性がありますか? @mythz var redis_factory = new PooledRedisClientManager(queue_connection);ビルダー 。を登録します(c => redis_factory)。 builder.register (c =>新しいRedisMqServer(redis_factory)); ... then builder.Register (c => new PooledRedisClientManager(cache_connection)); –
Redis ICacheClientを登録しても問題はありません。また、 'RedisMqServer'を含むすべてのものに対して同じ' PooledRedisClientManager'インスタンスを使用する必要があります。問題を特定する最善の方法は、問題を再現するために実行できる小さな独立型プロジェクトをまとめることです。 – mythz