StackExchange.Redis中来自BookSleeve的Sets.GetAllString()相当于什么?

时间:2014-12-09 16:31:00

标签: redis stackexchange.redis booksleeve

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

谢谢!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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);

我不是这个解决方案的粉丝。如果我遗漏了一些明显的东西,请告诉我。我很乐意摆脱这个......