ServiceStacks CacheClient 및 Redis 라이브러리를 사용하고 있습니다. 사용자가 수행하는 특정 트랜잭션 수를 캐시하고 싶습니다. (트랜잭션이 발생했을 때) 나는 DB에 행을 추가 할 다른 작업에서 지금ServiceStack CacheClient 및 Redis를 사용하여 카운터를 늘리거나 만드는 방법
public int GetTransactionCountForUser(int userID)
{
int count;
//get count cached in redis...
count = cacheClient.Get<int>("user:" + userID.ToString() + ":transCount");
if (count == 0)
{
//if it doent exists get count from db and cache value in redis
var result = transactionRepository.GetQueryable();
result = result.Where(x => x.UserID == userID);
count = result.Count();
//cache in redis for next time...
cacheClient.Increment("user:" + userID.ToString() + ":transCount", Convert.ToUInt32(count));
}
return count;
}
과 : 키가 존재하지 않는 경우 나 캐시 값을 GET 또는 DB에서를 만들려면 다음을 사용하고 있습니다 Redis 카운터를 1 씩 증가시키고 싶습니다.
증가하기 전에 특정 키가 있는지 먼저 확인해야합니까? 캐시 클라이언트의 Increment 메서드가 없으면 레코드를 생성하지만이 경우 DB에 트랜잭션 레코드가 있더라도 카운터가 0부터 시작한다는 것을 알고 있습니다.
이 상황을 처리하는 적절한 방법은 무엇입니까? 키를 얻으면, null 인 경우 db를 쿼리하여 개수를 얻고이 숫자로 키를 만듭니다.