Пакетные операции 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);
    }

Вы должны иметь в виду, что получение или установка слишком большого количества клавиш для одной команды может привести к проблемам с производительностью.

Другие вопросы по тегам