Redis Client for .net组件

来源:互联网 发布:wingide5 linux 破解 编辑:程序博客网 时间:2024/05/28 15:05


Redis .NET开源组件Beetle.Redis

        Beetle.Redis是一款开源的Redis Client for .net组件,它提供非常简便的操作方式可以让开发人员轻松地访问Redis,同时提供json和protobuf的数据格式支持.基于连接池的默认访问方式可以让开发人员简洁高效地访问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服务信息.

使用

组件的使用非常简单,在使用前并不需要象其他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.6

NorthWind Sample

Source Project

0 0
原创粉丝点击