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) 最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~ 也算是今天开通博客的 ...
随机推荐
- Windows默认字符集_查询
https://zhidao.baidu.com/question/32462047.html Windows95. XP……7操作系统自带的都是GBK字符集(含2万余汉字),是完全兼容GB2312( ...
- Hadoop- DistCp(分布式拷贝)
在实际的生产环境中,我们的企业都有测试集群和生产集群,有的比较大型的企业有多个版本的Hadoop 大数据集群,这时候有个这样的需求,各个集群上的资源需要进行迁移,比如说一些生产集群需要一些测试集群的数 ...
- 应验log4j.xml时不能找到log4j.dtd
原因分析:log4j.xml中使用log4j的DTD验证其格式的有效性"<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd&quo ...
- Python3 数据可视化之matplotlib、Pygal、requests
matplotlib的学习和使用 matplotlib的安装 pip3 install matplotlib 简单的折线图 import matplotlib.pyplot as plt #绘制简单的 ...
- HashMap,Hashtable,TreeMap ,Map
package com.wzy.list; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterato ...
- QWidget、QMainWindow、QFrame、QWindow、QDialog、QScrollArea区别
QWidget是所有可视化控件的基类,可以直接渲染出一个窗口来. QMainWindow用来表示一个主窗口,这个主窗口可以设置菜单和工具栏 QFrame用来表示一个框架,用来当作容器,因为可以设置它的 ...
- ACM学习历程—HDU5423 Rikka with Tree(搜索)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- bzoj 3533: [Sdoi2014]向量集 线段树维护凸包
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3533 题解: 首先我们把这些向量都平移到原点.这样我们就发现: 对于每次询问所得到的an ...
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
1.下载windows下的QT库 QT4.8.5 for vs2010: http://download.qt-project.org/official_releases/qt/4.8/4.8.5/q ...
- 初识Luajit
转自:http://www.cppblog.com/pwq1989/archive/2013/11/28/204487.html 大家可以从官网下载到源码(http://luajit.org/),也可 ...