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. 我使用的是下面这个版本: 若没有资源的话,我在 ...
随机推荐
- FPGA 设计流程,延迟,时间
FPGA 设计流程,延迟,时间 流程:每个时钟周期可以传输的数据比特. 延迟:从输入到时钟周期的输出数据需要经验. 时间:两个元件之间的最大延迟,最高时钟速度. 1 採用流水线能够提高 流量: 比如计 ...
- hdu Max Sum Plus Plus(dp+滚动数组)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 m为段,要深刻理解题意,并没有说是段与段要连接. 题解链接:http://blog.csdn.n ...
- JS 精度问题处理
/除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. //调用:accDiv(arg1,arg2) ...
- HTML5分析实战Web存储机制(Web Storage)
Web Storage它是Key-Value在持久性数据存储的形式.Web Storage为了克服cookie把所引起的一些限制.当数据需要严格格控制client准时,没有必要不断地发回数据serve ...
- UVA11627-Slalom(二分法)
题目链接 题意:有n个宽为w的旗门,第i个旗门左端的坐标为(xi, yi),对于全部1 <= i < n满足yi < y(i+1).你有s双滑雪板,第j双的速度为sj(垂直向下的速度 ...
- Google Maps API Web Services
原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...
- 四大OLAP工具选型浅析
OLAP(在线分析处理)这个名词是在1993年由E.F.Codd提出来的,只是,眼下市场上的主流产品差点儿都是在1993年之前就已出来,有的甚至已有三十多年的历史了.OLAP产品不少,本文将主要涉及C ...
- NET中异常处理的最佳实践
NET中异常处理的最佳实践 本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 ...
- POJ 1028 Web Navigation 题解
考查代码能力的题目.也能够说是算法水题,呵呵. 推荐新手练习代码能力. 要添加难度就使用纯C实现一下stack,那么就有点难度了,能够使用数组模拟环形栈.做多了,我就直接使用STL了. #includ ...
- oracle存储过程+游标处理select数据
create or replace PROCEDURE UPDATE_RECORDCODE is cursor location_data is select * from location wher ...