zoukankan      html  css  js  c++  java
  • ServiceStack.Redis 数据操作

    简单的字符串类型数据写. Poco在redis中会被序列化成Json字符串.

     1    using (var redis = new RedisClient(connString))
     2     {
     3       if (redis.Db != 7)
     4          ((RedisClient)redis).ChangeDb(7);
     5  
     6       var client = redis.As<Poco>();
     7        var list = new List<Poco>();
     8         
     9        foreach(var key in keys)
    10        {
    11            list.Add(client.GetValue(key.ToString(CultureInfo.InvariantCulture)));
    12        }
    13 
    14       return list;
    15     }

    Redis以快著称, 以上写法不是最快的.因为上边循环中每次都是进行了一个独立的Redis访问, 即进行了一次Query, 返回了一个Response

    [req1]
         [====waiting=====]
                          [resp1]
                                [req2]
                                     [====waiting=====]
                                                      [resp2]

    更快的写法是使用pipeline mode. Pipeline mode不会等待上一次Query的结果, 会立刻发送下一个Query. 每当有一条Response返回时, 它会对Response进行对应的Callback处理.

    以下是代码实现:

    此段代码摘自ServiceStack.Redis的测试类

     1     [Test]
     2     public void Can_call_single_operation_with_callback_3_Times_in_pipeline()
     3     {
     4         var results = new List<long>();
     5         Assert.That(Redis.GetValue(Key), Is.Null);
     6         using (var pipeline = Redis.CreatePipeline())
     7         {
     8             pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
     9             pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
    10             pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
    11             pipeline.Flush();
    12         }
    13 
    14         Assert.That(Redis.GetValue(Key), Is.EqualTo("3"));
    15         Assert.That(results, Is.EquivalentTo(new List<long> { 1, 2, 3 }));
    16     }
  • 相关阅读:
    UOJ#80. 二分图最大权匹配 模板
    BZOJ2243: [SDOI2011]染色
    LA5713 Qin Shi Huang's National Road System
    BZOJ1977: [BeiJing2010组队]次小生成树 Tree
    LA5009 Error Curves
    BZOJ1013: [JSOI2008]球形空间产生器sphere
    BZOJ2733: [HNOI2012]永无乡
    BZOJ1552: [Cerc2007]robotic sort
    BZOJ3223: Tyvj 1729 文艺平衡树
    网络流24题(24/24)
  • 原文地址:https://www.cnblogs.com/fudaming/p/5439354.html
Copyright © 2011-2022 走看看