StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)
本篇分享有部分瑕疵 请移步修正 http://www.cnblogs.com/tdws/p/6341494.html
本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址。http://www.cnblogs.com/tdws/p/5815735.html
这不是教程,分享而已,也欢迎园友们多提建议和指正。关于更多详细介绍,请到github上看Docs,下面附上地址。
关于Redis基础控制它台操作有疑问的,欢迎阅读Redis系列命令拾遗分享 http://www.cnblogs.com/tdws/tag/NoSql/
如今StackService.Redis已经转向商业版本。4.0以下的低版本依然免费和开源,低版本的不更新了,有没有bug谁知道呢?
但是我们依然有一个非常棒的选择,StackExchange.Redis。我给你一个使用它的理由,StackOverflow在使用它,我想其他的不说,这个理由足够了。
我要做的事情是什么,我为什么要做这件事情呢?
相信在平时工作中,我们使用redis大多是调用SOA接口,架构师或者缓存中心封装出dll给我们使用,然后你看不到源码,这很不爽啊!首先我把写博客当成另一种事业,所以我要做的就是分享封装Redis帮助类的方法以及过程,希望能帮助到自己和热爱技术的朋友们。
StackExchange在github上文档的地址:https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs
加强篇 http://www.cnblogs.com/tdws/p/6341494.html
本系列会包括如下内容,相信大家也掌握了:
一、基础配置封装
四、List列表类型数据操作封装(建议自行封装)
五、Set集合类型数据操作封装(建议自行封装)
六、Sort Set集合数据类型操作封装(建议自行封装)
七、发布订阅(Pub/Sub)模式在StackExchange.Redis中的使用
八、主从配置,哨兵相关配置
首先我们要从nuget中引用StackExchange.Redis到解决方案中的项目。
项目目录结构如下:
首先给大家看下RedisClientConfiguration.cs的代码。在这里我们定义了Redis链接地址,关于Get方法我们接下来再看。还定义了Port端口,链接超时时间,重试次数,Redis默认使用的数据库0-15,十六个。PreserveAsyncOrder用于配置异步操作是否应以保证其原始交付顺序的方式调用。
using RedisRepository.Helpers; namespace RedisRepository
{
public static class RedisClientConfigurations
{
private static string _url = ConfigurationHelper.Get("RedisServer", "127.0.0.1");
public static string Url
{
get { return _url; }
set { _url = value; }
} private static int _port = ;
public static int Port
{
get { return _port; }
set { _port = value; }
} private static int _connectTimeout = ;
public static int ConnectTimeout
{
get { return _connectTimeout; }
set { _connectTimeout = value; }
} private static int _connectRetry = ;
public static int ConnectRetry
{
get { return _connectRetry; }
set { _connectRetry = value; }
} private static int _defaultDatabase = ConfigurationHelper.Get("RedisDataBase", );
public static int DefaultDatabase
{
get { return _defaultDatabase; }
set { _defaultDatabase = value; }
} private static bool _preserveAsyncOrder = false;
public static bool PreserveAsyncOrder
{
get { return _preserveAsyncOrder; }
set { _preserveAsyncOrder = value; }
}
}
}
下面介绍ConfigurationHelper.cs中的Get方法。这就是获取我们WebConfig配置文件中Redis地址设置,并且必须指定默认地址。
using System;
using System.Configuration; namespace RedisRepository.Helpers
{
public static class ConfigurationHelper
{
internal static T Get<T>(string appSettingsKey, T defaultValue)
{
string text = ConfigurationManager.AppSettings[appSettingsKey];
if (string.IsNullOrWhiteSpace(text))
return defaultValue;
try
{
var value = Convert.ChangeType(text, typeof(T));
return (T)value;
}
catch
{
return defaultValue;
}
}
}
}
另外就到了我们的关键部分,定义Redis操作类接口IRedisClient.cs以及其实现类RedisClient.cs。接口将来暴露给外部调用者。
#region 程序集 RedisRepository, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Author:吴双 2016.8.28 联系邮箱wscoder@outlook.com
#endregion
using System;
using System.Collections.Generic;
using StackExchange.Redis; namespace RedisRepository
{
public interface IRedisClient
{ }
}
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using StackExchange.Redis; namespace RedisRepository
{
public class RedisClient : IRedisClient
{ #region 私有公用方法 在其中我们序列化操作使用Newtonsoft.Json组件 private string SerializeContent(object value)
{
return JsonConvert.SerializeObject(value);
} private T DeserializeContent<T>(RedisValue myString)
{
return JsonConvert.DeserializeObject<T>(myString);
} #endregion
}
}
接下来的几篇分享,我将持续加入相关操作方法。如果我的点滴分享对您有点低帮助,欢迎点击下方红色关注,我将持续分享,共同进步
StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)的更多相关文章
- StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明本系列分享地址:http://www.cnblogs.com/tdws/p/5815735.html 上一篇文章的不合理之处,已经有所修改. 今天分 ...
- StackExchange.Redis 异步超时解决方案
Timeout awaiting response (outbound=0KiB, inbound=45417KiB, 5891ms elapsed, timeout is 5000ms), comm ...
- StackExchange.Redis学习笔记(三) 数据库及密码配置 GetServer函数
这一章主要写一些StackExchange.Redis的配置及不太经常用到的函数 数据库连接 下面是我的连接字符串,里面指定了地址,密码,及默认的数据库 Redis启动后默认会分成0-15个数据库,不 ...
- StackExchange.Redis实现Redis发布订阅
由于ServiceStack.Redis最新版已经收费,所以现在大家陆陆续续都换到StackExchange.Redis上了,关于StackExchange.Redis详细可以参看Github htt ...
- RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用
本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战
笔记 4.Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步
深入理解MVC MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...
- StackExchange.Redis 二次封装
在NuGet直接搜索StackExchange.Redis,下载引用包: 帮助类: public class RedisUtils { /// <summary> /// redis配置文 ...
随机推荐
- .NET CoreCLR开发人员指南(上)
1.为什么每一个CLR开发人员都需要读这篇文章 和所有的其他的大型代码库相比,CLR代码库有很多而且比较成熟的代码调试工具去检测BUG.对于程序员来说,理解这些规则和习惯写法非常的重要. 这篇文章让所 ...
- Android(3)—Mono For Android App版本自动更新(2)
0.前言 这篇博文是上一篇的延续,主要是修改上一个版中的BUG和优化一些待完善的项,也算是结贴,当然还有需要完善的,等日后项目中用到的时候再单独写出来吧,本篇主要写升级改进的部分: 改进1.修复[BU ...
- 【道德经】漫谈实体、对象、DTO及AutoMapper的使用
写在前面 实体和值对象 实体和对象 故常无欲以观其妙,常有欲以观其徼 初始实体和演化实体 代码中的DTO AutoMapper实体转换 后记 实体(Entity).对象(Object).DTO(Dat ...
- 《徐徐道来话Java》:PriorityQueue和最小堆
在讲解PriorityQueue之前,需要先熟悉一个有序数据结构:最小堆. 最小堆是一种经过排序的完全二叉树,其中任一非终端节点数值均不大于其左孩子和右孩子节点的值. 可以得出结论,如果一棵二叉树满足 ...
- 2000条你应知的WPF小姿势 基础篇<28-33 WPF启动故事>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...
- [异常解决] ubuntukylin16.04 LTS中关于flash安装和使用不了的问题解决
http://www.linuxdiyf.com/linux/25211.html 归纳解决flash插件大法: 启动器中找到 软件更新,启动,点击 其它软件,把Canonical合作伙伴前方框 选上 ...
- 分段二次插值——用Python进行数值计算
事实上在实际使用中,高次插值显然是很不适合的,高次插值将所有样点包涵进一个插值函数中,这是次幂高的原因.高次计算复杂,而且刚开始的一点误差会被方的很大.因此将整个区间分为若干个小区间,在每一个小区间进 ...
- GIT服务器的四种协议
本地协议 最基本的就是_本地协议(Local protocol)_,所谓的远程仓库在该协议中的表示,就是硬盘上的另一个目录.这常见于团队每一个成员都对一个共享的文件系统(例如 NFS)拥有访问权,或者 ...
- 遍历dynamic的方式
一.遍历ExpandoObject /// <summary> /// 遍历ExpandoObject /// </summary> [TestMethod] public v ...
- 02.Web大前端时代之:HTML5+CSS3入门系列~H5结构元素
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.结构元素 可以理解为语义话标记,比如:以前这么写&l ...