먼저 만료 라이브러리에 대한 링크 : 지금 ServiceStack.RedisC# ServiceStack.Redis SETALL 함께
, 임 4 개 방법에서, 지금, 지원하는 몇 가지 일반적인 캐시 메커니즘을 작동 :
넣고는, 가져 오기, PutMany, GetMany
문제는 내가 여러 개의 레코드를 삽입 할 때마다 Put과 달리 만료를 추가하는 옵션이 표시되지 않는다는 것입니다. CachedItem<T>
는 내 꺼야
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);
}
모델, 단지 객체의 일종으로 상상 :
코드는 앞으로 꽤 streight입니다.
보시다시피, 나는 만료를 설정하는 옵션이 없습니다. 이 작업을 수행하려면 (_client.Set()
을 사용하여 1을 1을 삽입하는 것 외에) 방법이 있습니까?
TIA.
PS
나는 내가 모든 레코드가 잘못된 하나의 유효 기간 (있을 것이라는 점을 싶지 않는, 목록 또는 해시의 모든 기록을 저장할 수 있고, 때마다 그들은 매우 심각한 성능 문제가 발생할 수있어 만료)
해당 요청 1 개만큼 좋습니다. –
아직 n + 1 명령입니다. 당신은 루아 btw에서 같은 일을 할 수 있습니다. – MichaC
@MichaC ServiceStack.Redis는 모든 명령을 단일 네트워크 쓰기로 일괄 처리하므로 N + 1 요청 대기 시간이 없습니다. LUA는 더 많은 오버 헤드가됩니다. – mythz