RedisUtil(未完,持续更新中....)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
using StackExchange.Redis; namespace Common.Util
{
public class RedisUtil
{
#region init
private static object lockForRedis = new object();//连接实例锁
private static ConnectionMultiplexer Instance; //连接实例
/// <summary>
/// 默认开始就给连接
/// </summary>
static RedisUtil()
{
GetConn(); //--初始就实例化
}
/// <summary>
/// 获取连接
/// </summary>
/// <returns></returns>
private static ConnectionMultiplexer GetConn()
{
if (Instance == null)
{
lock (lockForRedis)
{
if (Instance == null || !Instance.IsConnected)
{
Instance = ConnectionMultiplexer.Connect(GetConfig()); }
}
}
return Instance;
}
/// <summary>
/// 获取配置
/// </summary>
/// <returns></returns>
private static ConfigurationOptions GetConfig()
{
ConfigurationOptions options = new ConfigurationOptions(); options.EndPoints.Add("localhost",6379);
options.ConnectTimeout = 6000; //超时时间设置(默认5000)
options.ConnectRetry = 1; //连接重试周期
return options;
}
#endregion
#region String
/// <summary>
/// 设置String值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="timeSpan"></param>
/// <param name="dbIndex"></param>
/// <returns></returns>
public static bool StringSet<T>(string key,T value,TimeSpan? timeSpan=null,int dbIndex=0)
{
try
{
var db = GetConn().GetDatabase(dbIndex);
return db.StringSet(key, JsonConvert.SerializeObject(value),timeSpan);
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
} }
/// <summary>
/// 获取String值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="dbIndex"></param>
/// <returns></returns>
public static T StringGet<T>(string key,int dbIndex=0)
{
try
{
var db = GetConn().GetDatabase(dbIndex);
return JsonConvert.DeserializeObject<T>(db.StringGet(key));
}
catch(Exception ex)
{
Console.WriteLine(ex);
return default(T);
} }
/// <summary>
/// 存入递增类型的键值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="dbIndex"></param>
/// <returns></returns>
public static double StringIncrement(string key, double value, int dbIndex = 0)
{
try
{
var db = GetConn().GetDatabase(dbIndex);
return db.StringIncrement(key,value);
}
catch (Exception ex)
{ return 0;
}
}
/// <summary>
/// 存入递减类型的键值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="dbIndex"></param>
/// <returns></returns>
public static double StringDecrement(string key,double value,int dbIndex = 0)
{
try
{
var db = GetConn().GetDatabase(dbIndex);
return db.StringDecrement(key, value);
}
catch (Exception ex)
{ return 0;
}
}
#endregion
}
}
RedisUtil(未完,持续更新中....)的更多相关文章
- (阿里巴巴)数据库连接池——Druid (未完持续更新)
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也 ...
- 【前端面试】Vue面试题总结(持续更新中)
Vue面试题总结(持续更新中) 题目参考链接 https://blog.csdn.net/weixin_45257157/article/details/106215158 由于已经有很多前辈深造VU ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...
- 中国.NET:各地微软技术俱乐部汇总(持续更新中...)
中国.NET:各地微软技术俱乐部汇总(持续更新中...) 本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by 史记微软. ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
- 史上最全的spark面试题——持续更新中
史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题 版权声明:本文为博主原创文章,遵循C ...
- 前端面试题总结——HTML(持续更新中)
前端面试题总结--HTML(持续更新中) 1.什么是HTML? HTML:HyperText Markup Language超文本标记语言 2.XHTML和HTML有什么区别 HTML是一种基本的WE ...
- 2020年腾讯实习生C++面试题&持续更新中(1)
2020年腾讯实习生C++面试题&持续更新中(1) 腾讯面试整理(1) 最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~ 也算是今天开通博客的 ...
随机推荐
- developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章
developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章 深入理解 Session 与 Cookie Session 与 Cookie 不管是对 Java Web ...
- 大话设计模式--命令模式 Command -- C++实现实例
1. 命令模式: 将请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作. 命令模式有点: a. 较容易的设计一个命令队列 b. 在需要的的情况 ...
- linux rpm包的编译
有些软件包的特性是编译者选定的,如果编译未选定此特性,将无法使用.rpm包的版本落后于源码包. 因此需要定制安装,也就是手动编译安装. 编译需要编译环境. 编译的过程如下: 1.下载源码 2.执行 t ...
- matlat之KDTreeSearcher()函数
Create Kd-tree nearest neighbor searcher(创建kd-树最近邻搜索器). Description KDTreeSearcher model objects sto ...
- jquery的ajax(err)
load()方法 load()方法是jquery中最为简单和常用的ajax方法. 直接使用ajax技术的流程 1.创建xmlhttprequest对象 2.调用open函数("提交方式&qu ...
- SpringMVC注解示例
1.web.xml <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-cla ...
- long long 与 __int64
1.long long VC中不能用,codeblocks中 可以 #include<iostream> #include<stdio.h> using namespace s ...
- Android 内存监测工具 DDMS --> Heap
用 Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的: 2. 将手机通过USB链接至电脑,链接时需要确认 ...
- 使用Visual Studio进行单元测试-Part1
写在开头:Coding ain't done until all the tests run. No unit test no BB. -------------------------------- ...
- ElasticSearch logo 分布式搜索引擎 ElasticSearch
原文来自:http://www.oschina.net/p/elasticsearch Elastic Search 是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中 ...