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) 最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~ 也算是今天开通博客的 ...
随机推荐
- Tomcat处理HTTP请求源码分析(上)
Tomcat处理HTTP请求源码分析(上) 作者 张华 发布于 2011年12月8日 | 8 讨论 分享到: 微博 微信 Facebook Twitter 有道云笔记 邮件分享 稍后阅读 我的阅读清单 ...
- POJ 2831 Can We Build This One:次小生成树【N^2预处理】
题目链接:http://poj.org/problem?id=2831 题意: 给你一个图,每条边有边权. 然后有q组询问(i,x),问你如果将第i条边的边权改为x,这条边是否有可能在新的最小生成树中 ...
- DELPHI 动态 创建和释放 多个 EDIT 控件
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...
- linux命令学习笔记(21):find命令之xargs
xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs的作用一般等同于大多数Unix shell中的反引号,但更 ...
- Android 内存监测工具 DDMS --> Heap
用 Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的: 2. 将手机通过USB链接至电脑,链接时需要确认 ...
- cocos2d-x 之 CCParticleBatchNode CCParallaxNode
//不使用 CCParticleBatchNode : 注意比较 左下角的显示信息 ; i<; ++i) { CCParticleSystem* particleSystem = CCParti ...
- Xposed模块开发学习记录
Xposed模块相关API可以参考在线文档: https://api.xposed.info/reference/packages.html 入门教程可以参考: https://github. ...
- diea破解
选择菜单Help->Register->License server,填上http://idea.iteblog.com/key.php,如图所示: 点击Activate,然后就搞定了.
- Aravis 库编译方法
Aravis 库编译方法 March 21, 2015 9:40 PM 首先下载 aravis 库的源代码:aravis 库下载地址 这里我们使用的是 aravis_0_2_0,比较老的一个版本. 首 ...
- Guava手记
Cache Guava的Cache封装的功能比较全面,但是很多地方和设想的不太一样,最明显的就是RemovalListener,它并不是invalid之后就会被调用,因为在调用Cache的invali ...