StackExchange.Redis:多个哈希的批量访问

时间:2015-02-17 22:29:53

标签: redis pipeline stackexchange.redis batching

所以我需要批量访问许多不同的哈希值(在StackExchange.Redis中,我有不同的RedisKey' s)。

最好(最快)的方法是什么? 例如,对于这两种可能的实现,是否正确?哪一个效果更好?

  1.         List<Task<HashEntry[]>> list = new List<Task<HashEntry[]>>();
            List<RedisKey> keys; //Previously initialized list of keys
            foreach (var key in keys)
            {
                var task = db.HashGetAllAsync(key);
                list.Add(task);
            }
            await Task.WhenAll(list);
    
  2. 2

                List<Task<HashEntry[]>> list = new List<Task<HashEntry[]>>();
                List<RedisKey> keys; //Previously initialized list of keys
                IBatch batch = db.CreateBatch();
                foreach (var key in keys)
                {
                    var task = batch.HashGetAllAsync(key);
                    list.Add(task);
                }
                batch.Execute();
    

1 个答案:

答案 0 :(得分:2)

关于表现:你有时间吗?

除此之外:两者都有效,并有不同的权衡;例如,后者是同步的 - 从避免所有 TPL开销和复杂性中获益。您可能还需要考虑第三个选项 - 一个Lua脚本,它接受键和一组键作为输入,并为每个键调用HGETALL