Redis .NET開源組件Beetle.Redis

        Beetle.Redis是一款開源的Redis Client for .net組件,它提供很是簡便的操做方式能夠讓開發人員輕鬆地訪問Redis,同時提供json和protobuf的數據格式支持.基於鏈接池的默認訪問方式能夠讓開發人員簡潔高效地訪問redis同時,而沒必要關心線程和鏈接同步等一系列複雜的事情.redis

配置

組件在使用前要進行配置,主要用於描述訪問Redis的信息,分別是讀寫服務表列.數據庫

  <configSections>
    <section name="redisClientSection" type="Beetle.Redis.RedisClientSection, Beetle.Redis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </configSections>
  <redisClientSection dB="0"  xmlns="urn:Beetle.Redis">
    <writes>
      <add host="192.168.0.105" connections="9"/>
    </writes>
    <reads>
      <add host="192.168.0.105" connections="9"/>
    </reads>
  </redisClientSection>

以上分別配置讀/寫服務地址,默認開啓的鏈接數是9個,訪問數據庫是0;根據實際應用的須要讀/寫均可以配置多個redis服務信息.json

使用

組件的使用很是簡單,在使用前並不須要象其餘redis client組件同樣定義鏈接信息,組件在缺省的狀況下會自動使用 redisClientSection的配置環境去操做相應的Redis服務.性能

  • String Get/Set
                StringKey key = "HENRY";
                string Remark = "henryfan gz cn 18 henryfan@msn.com 28304340";
                key.Set(Remark);
                Assert.AreEqual(Remark, key.Get<string>());
  • Json Get/Set
        JsonKey rk = "henry_json";
                UserBase ub = new UserBase();
                ub.Name = "henryfan";
                ub.City = "gz";
                ub.Counrty = "cn";
                ub.Age = 10;
                rk.Set(ub);
                Assert.AreEqual(ub.Name, rk.Get<UserBase>().Name);
  • Protobuf Get/Set
                ProtobufKey rk = "henry_protobuf";
                UserBase ub = new UserBase();
                ub.Name = "henryfan";
                ub.City = "gz";
                ub.Counrty = "cn";
                ub.Age = 10;
                rk.Set(ub);
                Assert.AreEqual(ub.Name, rk.Get<UserBase>().Name);
  • List
     [TestMethod]
            public void LST_POP_PUSH()
            {
                ProtobufList<UserBase> lst = "USERS";
                lst.Push(new UserBase { Name = "henry", Age = 18, City = "gz", Counrty = "cn" });
                Assert.AreEqual("henry", lst.Pop().Name);
            }
            [TestMethod]
            public void LST_REMOVE_ADD()
            {
                ProtobufList<UserBase> lst = "USERS";
                lst.Add(new UserBase { Name = "henry", Age = 18, City = "gz", Counrty = "cn" });
                lst.Add(new UserBase { Name = "bbq", Age = 18, City = "gz", Counrty = "cn" });
                Assert.AreEqual("bbq", lst.Remove().Name);
            }
            [TestMethod]
            public void LST_Length()
            {
                ProtobufList<UserBase> lst = "USERS";
                lst.Clear();
                lst.Add(new UserBase { Name = "henry", Age = 18, City = "gz", Counrty = "cn" });
                lst.Add(new UserBase { Name = "bbq", Age = 18, City = "gz", Counrty = "cn" });
                Assert.AreEqual(lst.Count(), 2);
            }
            [TestMethod]
            public void LST_Region()
            {
                ProtobufList<UserBase> lst ="USERS";
                lst.Clear();
                for (int i = 0; i < 10; i++)
                {
                    lst.Add(new UserBase { Name = "henry" + i, Age = 18, City = "gz", Counrty = "cn" });
                }
                IList<UserBase> items = lst.Range();
                Assert.AreEqual(items[0].Name, "henry0");
                Assert.AreEqual(items[9].Name, "henry9");
                items = lst.Range(5, 7);
                Assert.AreEqual(items[0].Name, "henry5");
                Assert.AreEqual(items[2].Name, "henry7");
            }
  • MapSet
      [TestMethod]
            public void MapSet()
            {
    
                JsonMapSet map = "HENRY_INFO";
                UserBase ub = new UserBase();
                ub.Name = "henryfan";
                ub.City = "gz";
                ub.Counrty = "cn";
                ub.Age = 10;
                Contact contact = new Contact();
                contact.EMail = "hernyfan@msn.com";
                contact.QQ = "28304340";
                contact.Phone = "13660223497";
                map.Set(ub, contact);
                IList<object> data = map.Get<UserBase, Contact>();
                Assert.AreEqual(ub.Name, ((UserBase)data[0]).Name);
                Assert.AreEqual(contact.Phone, ((Contact)data[1]).Phone);
    
            }
            [TestMethod]
            public void MapSetdRemove()
            {
                JsonMapSet map = "HENRY_INFO";
                UserBase ub = new UserBase();
                ub.Name = "henryfan";
                ub.City = "gz";
                ub.Counrty = "cn";
                ub.Age = 10;
                Contact contact = new Contact();
                contact.EMail = "hernyfan@msn.com";
                contact.QQ = "28304340";
                contact.Phone = "13660223497";
                map.Set(ub, contact);
                map.Remove<Contact>();
                contact = map.Get<Contact>();
                Assert.AreEqual(null, contact);
    
            }
            [TestMethod]
            public void MapSetClear()
            {
                JsonMapSet map = "HENRY_INFO";
                UserBase ub = new UserBase();
                ub.Name = "henryfan";
                ub.City = "gz";
                ub.Counrty = "cn";
                ub.Age = 10;
                Contact contact = new Contact();
                contact.EMail = "hernyfan@msn.com";
                contact.QQ = "28304340";
                contact.Phone = "13660223497";
                map.Set(ub, contact);
                map.Clear();
                IList<object> data = map.Get<UserBase, Contact>();
                Assert.AreEqual(null, data[0]);
                Assert.AreEqual(null, data[1]);
            }

性能

 

Sample

下載

Beetle.Redis 0.6spa

NorthWind Sample.net

Source Project線程

相關文章
相關標籤/搜索