在 BookSleeve 中有一个 connection.Sets.GetAllString() 方法。StackExchange.Redis 中的等价物是什么?
谢谢!
在 BookSleeve 中有一个 connection.Sets.GetAllString() 方法。StackExchange.Redis 中的等价物是什么?
谢谢!
找到它:connection.SetMembers(...) 从一个键中获取一个集合的所有字符串。
StringGet 有一个重载,它需要一个 RedisKey 实例数组,所以这将是一次获取多个字符串的最佳方法:)
经过大量搜索,我能想到的最好的方法就是滥用 SetCombine(...)。基本概念是要求redis“组合”单个集合并返回结果。这将返回该单一集合中的所有值。
Sets.GetAllString(...) 还返回了一个字符串数组。SetCombine 返回一个 RedisValue 数组。我编写了这个小扩展方法来帮助重构我正在处理的一些代码。
internal static class StackExchangeRedisExtentions
{
internal static string[] SetGetAllString(this IDatabase database, RedisKey key)
{
var results = database.SetCombine(SetOperation.Union, new RedisKey[] { key });
return Array.ConvertAll(results, item => (string)item);
}
}
// usage
string key = "MySetKey.1";
string[] values = database.SetGetAllString(key);
我不喜欢这个解决方案。如果我遗漏了一些明显的东西,请告诉我。我很高兴摆脱这个...