0

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

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

如果我们可以一次缓存 3000 个键/值对,那就太好了 - 然后使用以下方式访问它们:cache.GetValues(List<int> keys)

4

2 回答 2

1

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

于 2015-02-27T18:38:54.490 回答
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);
    }

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

于 2015-03-13T16:28:31.260 回答