Azure Redis 缓存批量操作/多次操作
Azure Redis Cache Batch Operations / Multiple Operations
给定键列表,我想从 Azure Redis 缓存中提取多个值。
我们如何使用 Azure Redis 缓存同时执行多个操作?
我们的数据是 int
/ComplexObject
对。我们的数据位于 SQL 服务器中。我们目前通过将 List<int>
键转换为 XElement
对象并将其传递到存储过程中来获取列表 - 但我们的键大小非常小(3000 个键) - 因此正在访问相同的数据多次被多个用户使用。
如果我们可以将 3000 个 key/value 对缓存一次,然后使用类似以下内容访问它们,那就太好了:cache.GetValues(List<int> keys)
Azure Redis 缓存没有什么特别之处。您可能希望执行 Redis 支持的事务操作,如此处所示 http://redis.io/topics/transactions
如果您使用 Stack Exchange Redis 客户端,那么您可以参考此页面 https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Transactions.md
查看 Redis 具有的 MGet (http://redis.io/commands/mget) and 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);
}
请记住,在单个命令中获取或设置过多的键可能会导致性能问题。
给定键列表,我想从 Azure Redis 缓存中提取多个值。 我们如何使用 Azure Redis 缓存同时执行多个操作?
我们的数据是 int
/ComplexObject
对。我们的数据位于 SQL 服务器中。我们目前通过将 List<int>
键转换为 XElement
对象并将其传递到存储过程中来获取列表 - 但我们的键大小非常小(3000 个键) - 因此正在访问相同的数据多次被多个用户使用。
如果我们可以将 3000 个 key/value 对缓存一次,然后使用类似以下内容访问它们,那就太好了:cache.GetValues(List<int> keys)
Azure Redis 缓存没有什么特别之处。您可能希望执行 Redis 支持的事务操作,如此处所示 http://redis.io/topics/transactions 如果您使用 Stack Exchange Redis 客户端,那么您可以参考此页面 https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Transactions.md
查看 Redis 具有的 MGet (http://redis.io/commands/mget) and 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);
}
请记住,在单个命令中获取或设置过多的键可能会导致性能问题。