3
我正在使用ServiceStacks CacheClient和Redis庫。我想緩存用戶執行的某些事務數量的計數。我使用以下命令獲取緩存值或從數據庫中創建它,如果該鍵不存在:如何使用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;
}
現在,在另一個操作(當交易發生時)我會添加一行到DB和我想將我的Redis計數器增加1.
我是否首先需要檢查增量前是否存在特定的密鑰?我知道如果緩存客戶端的增量方法不存在,緩存客戶端的增量方法將創建該記錄,但在這種情況下,即使數據庫中存在事務記錄,計數器也將從0開始。
處理這種情況的正確方法是什麼?獲取密鑰,如果爲空,則查詢數據庫以獲取計數並使用此數字創建密鑰?