2018-06-27 更新了redis新的 方法类 https://www.cnblogs.com/jhy55/p/9232623.html

更新内容:添加连接池,高并发线程错误

实用redis已经有一段时间了,今天刚好有空记录一下所用到的方法,欢迎指正

首先我封装了一些字段信息

    #region 字段
/// <summary>
/// Redis服务器地址
/// </summary>
private static string _host; /// <summary>
/// 端口
/// </summary>
private static int _port; /// <summary>
/// 密码
/// </summary>
private static string _password; /// <summary>
/// 过期时间
/// </summary>
private static DateTime _timeout; #endregion #region 属性
/// <summary>
/// Redis服务器地址
/// </summary>
public static string Host
{
get { return _host = ConfigurationManager.AppSettings["RedisIp"]; }
} /// <summary>
/// 端口
/// </summary>
public static int Port
{
get { return _port = Int32.Parse(ConfigurationManager.AppSettings["RedisPort"]); }
}
/// <summary>
/// 密码
/// </summary>
public static string Password
{
get { return _password = ConfigurationManager.AppSettings["PassWord"]; }
} public static int TimeOutDay = Int32.Parse(ConfigurationManager.AppSettings["DayOut"]); /// <summary>
/// 过期时间
/// </summary>
public static DateTime Timeout
{
get { return _timeout = DateTime.Now.AddDays(TimeOutDay); }
}
#endregion

  

 private static object _locker = new object();

        private static RedisClient redis
{
get
{
RedisClient redis = new RedisClient();
if (!IsLock)
redis = new RedisClient(Host, Port, Password, ChangeDb);
redis.ChangeDb(ChangeDb);
return redis;
}
} /// <summary>
/// 获得Redis对象
/// </summary>
public static RedisClient Redis
{
get { return redis; }
} /// <summary>
/// 设置缓存
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="key"></param>
/// <param name="t"></param>
/// <param name="timeOut">过期时间</param>
/// <returns></returns>
public static bool Set<T>(string key, T t)
{
if (IsLock) return false;
lock (_locker)
{
return redis.Set(key, t, Timeout);
}
} /// <summary>
/// 设置缓存
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="key"></param>
/// <param name="t"></param>
/// <param name="timeOut">过期时间</param>
/// <returns></returns>
public static bool Set<T>(string key, T t, DateTime time)
{
if (IsLock) return false;
lock (_locker)
{
return redis.Set(key, t, time);
}
}
/// <summary>
/// 获取缓存
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
public static T Get<T>(string key)
{
if (IsLock) return default(T);
lock (_locker)
{
if (redis.Exists(key) > 0)
return redis.Get<T>(key);
else
return default(T);
}
} /// <summary>
/// 判断是否存在某个key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool IsExist(string key)
{
if (IsLock) return false; byte[] buffer = redis.Get(key);
if (buffer.Length > 0)
return true;
else
return false;
} /// <summary>
/// 获取Value的byte的长度
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static int GetValueLength(string key)
{
if (IsLock) return 0; return redis.Get(key).Length;
} /// <summary>
/// 移除指定的Key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool Remove(string key)
{
if (IsLock) return false; lock (_locker)
{
return redis.Remove(key);
}
} /// <summary>
/// 累加(专用的哦)
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string Append(string sKey, string s)
{
byte[] t = Encoding.Default.GetBytes(s);
t = Encoding.Default.GetBytes(Convert.ToBase64String(t) + "^");
return redis.Append(sKey, t).ToString();
}

  

     /// <summary>
/// 从Redis中读取记录列表
/// </summary>
/// <typeparam name="T">数据结构类型</typeparam>
/// <param name="sKey">关键字</param>
/// <returns></returns>
public static List<T> ReaderEnqueueList<T>(string sKey)
{
var OrderStepLogList = Soholife.Common.RedisUtil.Redis.As<T>();
var fromList = OrderStepLogList.Lists[sKey];
List<T> oList = OrderStepLogList.GetAllItemsFromList(fromList);
if (oList != null)
{
OrderStepLogList.RemoveAllFromList(fromList);
}
return oList;
} /// <summary>
/// 加入具有数据结构的消息队列中
/// </summary>
/// <typeparam name="T">数据结构类型</typeparam>
/// <param name="t">数据对象</param>
/// <param name="sKey">关键字</param>
public static void AddEnqueue<T>(T t, string sKey)
{
var OrderStepLogList = Soholife.Common.RedisUtil.Redis.As<T>();
//加入具有数据结构的消息队列中
OrderStepLogList.EnqueueItemOnList(OrderStepLogList.Lists[sKey], t);
}

  

redis的常用公共方法的更多相关文章

  1. redis的常用公共方法(2)

    之前已经写过一篇redis公共方法的使用(https://www.cnblogs.com/jhy55/p/7681626.html),可是发现在高并发的时候出现 Unknown reply on in ...

  2. iOS常用公共方法

      iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...

  3. iOS 常用公共方法

    iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; N ...

  4. JS常用公共方法封装

    _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||/ ...

  5. js 常用公共方法

    1.判断是否为空 function isNull(arg1) { return !arg1 && arg1!==0 && typeof arg1!=="boo ...

  6. J2EE项目开发中常用到的公共方法

    在项目IDCM中涉及到多种工单,包括有:服务器|网络设备上下架工单.服务器|网络设备重启工单.服务器光纤网线更换工单.网络设备撤线布线工单.服务器|网络设备替换工单.服务器|网络设备RMA工单.通用原 ...

  7. web开发过程中经常用到的一些公共方法及操作

    进化成为程序猿也有段岁月了,所谓的经验,广度还是依旧,只不过是对于某种功能有了多种实现方式的想法.每天依旧不厌其烦的敲打着代码,每一行代码的回车似乎都有一种似曾相识的感觉.于是乎:粘贴复制,再粘贴再复 ...

  8. 4-4 Redis 的常用配置

    2016-12-22 15:30:43 本篇文章属于Redis 系列第四篇文章:Redis 配置文件介绍 该系列文章链接 NoSQL 数据库简介 Redis的安装及及一些杂项基础知识 Redis 的常 ...

  9. Python中高级变量类型(列表,元组,字典,字符串,公共方法...)

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...

随机推荐

  1. 在CentOS 7中安装Jetty服务器

    Jetty 是一款纯Java的HTTP (Web) 服务器和Java Servlet容器. 通常在更大的网络框架中,Jetty经常用于设备间的通信,而其他Web服务器通常给"人类" ...

  2. iOS 关于文件的操作

    最近做东西,遇到了使用文件方面的问题,花了点时间把文件研究了一下! 一  关于文件路径的生成 我用的方法是: -(NSString*)dataFilePath { NSArray * paths = ...

  3. Jenkins gitlab vue,angular,react 自动化构建【原】

    大致思路,(本篇主要讲vue ,当然了 angular react 也是一样配置) ,转发请注明原链接,谢谢 :) 1. 服务器上面配置jenkins (安装配置,不介绍) 2.新建item 自由风格 ...

  4. 几种优化ajax的执行速度的方法

    1.尽量使用局部的变量,而不使用全局变量: 2.优化for循环 3.尽量少用eval,每次使用eval都需要消耗大量的时间: 4.将DOM节点放在文档上. 5.尽量减少点好(.)操作符号的使用

  5. js获取对象长度和名称

    1.对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' : 'male' , 'age' : '14' ...

  6. 剑指offer第一天

    15.反转链表 输入一个链表,反转链表后,输出链表的所有元素. 解法一:(使用栈) /* public class ListNode { int val; ListNode next = null; ...

  7. rgba 和 IE 的 filter数值转换

  8. 看eShopOnContainers学一个EventBus

    最近在看微软eShopOnContainers 项目,看到EventBus觉得不错,和大家分享一下 看完此文你将获得什么? eShop中是如何设计事件总线的 实现一个InMemory事件总线eShop ...

  9. Hive命令及操作

    1.hive表操作 复制表结构 create table denserank_amt like otheravgrank_amt;修改表名 alter table tmp rename to cred ...

  10. H3C无线路由器安装与设置

    一.电脑与路由器的连接利用一根cat5e网线一头连接到电脑上笔记本或台式机都可以,另一头连接到无线路由器的LAN口任意LAN口都可以二.设置无线路由器完成路由器安装与电脑连接后,接下首次使用就需要设置 ...