2015-02-24 63 views
0

給出一個鍵列表,我想從Azure Redis緩存中提取多個值。 我們如何與Azure Redis Cache同時執行多個操作?Azure Redis緩存批量操作/多個操作

我們的數據是一個int/ComplexObject對。我們的數據位於SQL Server中。我們目前通過將我們的密鑰List<int>轉換爲XElement對象並將其傳遞給存儲過程來獲取列表,但我們的密鑰大小很小(3000個密鑰),因此同一數據一次又一次地被多個用戶訪問。

這將是巨大的,如果我們可以只緩存3000鍵/值對一次 - 然後用類似訪問它們:cache.GetValues(List<int> keys)

回答

1

看那MGET(http://redis.io/commands/mget)和MSET(http://redis.io/commands/mset)功能顯示的Redis具有。這些在StackExchange.Redis客戶端上受支持。

private static void MGet(CancellationToken cancellationToken) 
    { 
     var pairs = new KeyValuePair<RedisKey, RedisValue>[] { 
      new KeyValuePair<RedisKey,RedisValue>("key1", "value1"), 
      new KeyValuePair<RedisKey,RedisValue>("key2", "value2"), 
      new KeyValuePair<RedisKey,RedisValue>("key3", "value3"), 
      new KeyValuePair<RedisKey,RedisValue>("key4", "value4"), 
      new KeyValuePair<RedisKey,RedisValue>("key5", "value5"), 
     }; 

     var keys = pairs.Select(p => p.Key).ToArray(); 

     Connection.GetDatabase().StringSet(pairs); 

     var values = Connection.GetDatabase().StringGet(keys); 
    } 

您將需要記住,在單個命令上獲取或設置太多密鑰可能會導致性能問題。