0

在 BookSleeve 中有一个 connection.Sets.GetAllString() 方法。StackExchange.Redis 中的等价物是什么?

谢谢!

4

3 回答 3

0

找到它:connection.SetMembers(...) 从一个键中获取一个集合的所有字符串。

于 2014-12-10T08:43:18.917 回答
0

StringGet 有一个重载,它需要一个 RedisKey 实例数组,所以这将是一次获取多个字符串的最佳方法:)

于 2014-12-09T17:50:34.653 回答
0

经过大量搜索,我能想到的最好的方法就是滥用 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);

我不喜欢这个解决方案。如果我遗漏了一些明显的东西,请告诉我。我很高兴摆脱这个...

于 2015-10-08T22:10:54.337 回答