Пакетные операции Azure Redis Cache / Несколько операций
Учитывая список ключей, я хочу извлечь несколько значений из кэша Redis Azure. Как мы выполняем несколько операций одновременно с Redis Cache Azure?
Наши данные int
/ComplexObject
пара. Наши данные находятся в SQL Server. В настоящее время мы получаем список путем преобразования нашего List<int>
ключей в XElement
объект и передача его в хранимую процедуру - но наш размер ключа довольно мал (3000 ключей) - так что одни и те же данные снова и снова доступны для нескольких пользователей.
Было бы замечательно, если бы мы могли просто кэшировать 3000 пар ключ / значение один раз, а затем получить к ним что-то вроде: cache.GetValues(List<int> keys)
2 ответа
Для кеша Azure Redis нет ничего особенного. Вы хотели бы выполнить операцию транзакции, поддерживаемую в Redis, как показано здесь http://redis.io/topics/transactions Если вы используете Redis-клиент Stack Exchange, вы можете обратиться к этой странице https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Transactions.md
Посмотрите на функциональность 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);
}
Вы должны иметь в виду, что получение или установка слишком большого количества клавиш для одной команды может привести к проблемам с производительностью.