Azure Redis缓存批处理操作/多个操作

时间:2015-02-24 17:10:53

标签: azure-caching azure-redis-cache

给定一个Keys列表,我想从Azure Redis Cache中提取多个值。 我们如何使用Azure Redis缓存同时执行多个操作?

我们的数据是int / ComplexObject对。我们的数据位于SQL Server中。我们目前通过将List<int>密钥转换为XElement对象并将其传递到存储过程来获取列表 - 但我们的密钥大小非常小(3000个密钥) - 因此访问相同的数据多个用户一次又一次地。

如果我们只能缓存一次3000个键/值对,然后使用以下内容访问它们会很棒:cache.GetValues(List<int> keys)

2 个答案:

答案 0 :(得分:1)

Azure Redis缓存没有什么特别之处。您可能希望执行Redis支持的事务操作,如下所示http://redis.io/topics/transactions 如果您使用Stack Exchange Redis客户端,则可以参考此页面https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Transactions.md

答案 1 :(得分:1)

查看Redis具有的MGet(http://redis.io/commands/mget)和MSet(http://redis.io/commands/mset)功能。这些在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);
    }

您需要记住,在单个命令上获取或设置太多键可能会导致性能问题。