• Redis .NET开源组件Beetle.Redis


    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

  • 相关阅读:
    【Forza Horizon 5】频繁断网解决办法
    【Java】java.util.ConcurrentModificationException
    【MySQL】下发功能SQL
    【MybatisPlus】 Field '主键' doesn't have a default value
    【SpringBoot】数据源加密处理
    【VMware】将NAT虚拟机开放访问
    TreeView绑定数据库收藏
    存储过程概述
    asp.net页面直接输出纯xml
    如何保证远程登录服务器安全
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3477664.html
Copyright © 2020-2023  润新知