まず、ライブラリーへのリンクPutMany、GetManyC#ServiceStack.Redis SETALL期限切れに
問題は、私が多数のレコードを挿入したいときは、プットとは違って、有効期限を追加するオプションがありません。
コードが前方にかなりstreightです:
public void PutMany(ICollection<T> items)
{
TimeSpan expiration = GetExpiration();
DateTime expire = DateTime.UtcNow.Add(expiration);
Dictionary<string, CachedItem<T>> dict = new Dictionary<string, CachedItem<T>>();
foreach (T item in items)
{
CachedItem<T> cacheItem = new CachedItem<T>(item, expire);
if (!dict.ContainsKey(cacheItem.Id))
dict.Add(cacheItem.Id, cacheItem);
}
// Store item in cache
_client.SetAll(dict);
}
モデルCachedItem<T>
だけで、オブジェクトのいくつかの並べ替えとしてそれを想像して、私のものです。
ご覧のとおり、有効期限を設定するオプションはありません。 これを実現する方法はありますか(_client.Set()
を使用して1で1を挿入する以外に)ですか?
TIA。
PS
私は私がすべてのレコードが間違って単一の有効期限を(持っていることをたくない、リストまたはハッシュ内のすべてのレコードを格納することができ、そしていつでも、彼らは非常に深刻なパフォーマンスの問題を引き起こす可能性があります知っています有効期限)
限り、その1つの要求は、大丈夫です。 –
これはまだn + 1コマンドです。あなたはlua btwでも同じことができます。 – MichaC
@MichaC ServiceStack.Redisは、すべてのコマンドを1回のネットワーク書き込みでバッチ処理するので、N + 1要求待ち時間はありません。 LUAはよりオーバーヘッドになります。 – mythz