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

下载
Redis .NET开源组件Beetle.Redis的更多相关文章
- .NET redis 客户端开源组件 FreeRedis (继 CSRedisCore 之后重写)
什么是 FreeRedis FreeRedis 是一款 .NET redis 客户端开源组件,以 MIT 协议开源托管于 github,目前支持 .NET 5..NETCore 2.1+..NETFr ...
- ELK(+Redis)-开源实时日志分析平台
################################################################################################### ...
- 分布式限流组件-基于Redis的注解支持的Ratelimiter
原文:https://juejin.im/entry/5bd491c85188255ac2629bef?utm_source=coffeephp.com 在分布式领域,我们难免会遇到并发量突增,对后端 ...
- 360开源的类Redis存储系统:Pika
Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika.有维护 Redis 经验的 DBA 维护 ...
- 测试Beetle.Redis+Web Api
在Web Api里用Beetle.Redis调用Redis服务端的TIME命令返回一个json格式,然后客户端是用的HttpTest4Net做的测试: CPU:I7-3770 内存:4G+4G 硬盘: ...
- redis的搜索组件 redis-search4j
redis-search4j是一款基于redis的搜索组件. 特点 1.基于redis,性能高效 2.实时更新索引 3.支持Suggest前缀.拼音查找(AutoComplete功能) 4.支持单个或 ...
- Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能
Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...
- 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis
目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...
- Redis学习笔记一(Redis的详细安装及Linux环境变量配置和启动)
Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 我使用的是下面这个版本: 若没有资源的话,我在 ...
随机推荐
- android 性能測试iozone篇
一:简单介绍 iozone是一个文件系统的benchmark工具, 用于測试不同的操作系统中文件系统的读写性能, 能够測试下面13种模式 0=write/rewrite 1=read/re-read ...
- projecteuler---->problem=34----Digit factorials
Problem 34 145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145. Find the sum of all number ...
- Nyoj 城市平乱(图论)
描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...
- AspNetPager常用属性及一些样式
AlwaysShow 总是显示分页控件,即使要分页的数据只有一页 AlwaysShowFirsLastPageNumbr 是否总是显示第一页和最后一页数字页索引按钮 BackImageUrl 面板的背 ...
- ocp11g培训内部教材_052课堂笔记(042)_体系架构
OCP 052 课堂笔记 目录 第一部分: Oracle体系架构... 4 第一章:实例与数据库... 4 1.Oracle 网络架构及应用环境... 4 2.Oracle 体系结构... 4 3. ...
- java_JFrame_demo
不要见笑,cs基本入行很少做 留个demo备忘 /* * Copyright (c) 2014-2024 . All Rights Reserved. * * This software is the ...
- Java
递归算法
其基本思路是递归算法设计:对于一个复杂的问题,原问题分为几个子问题相似相对简单.继续下去,直到孩子可以简单地解决问题,这是导出复发,因此,有复发的原始问题已经解决. 关键是要抓住: (1)递归出口 ( ...
- Objective-C中的Category(分类)
Objective-C中的Category(分类) 1 Category概念:动态的为已经存在的类加入新的行为(方法) 2 Category(分类)创建的方法 (1)通过Xcode生成分类 (2)能够 ...
- linux下一个Oracle11g RAC建立(八)
linux下一个Oracle11g RAC建立(八) 七.安装oracle软件 直接在图形界面里安装oracle.在node1操作 在虚拟机界面中,直接切换到oracle用户下: [grid@no ...
- SSAS系列——【01】准备知识
原文:SSAS系列--[01]准备知识 关于SQL Server 产品,我从2004年就开始使用了,SQL Server 2K,2K5,2K8,到如今已经准6年了,说来惭愧,这六年来所涉及的内容都是在 ...

