关于C#操作redis公共类,网上有很多版本,每个版本我都看了,发觉还是不够完美,都存在一个问题,只能操作单一的缓存数据库
redis指令支持上,这里可以自己去扩展,下面分享下我近期封装的一个redis操作类
要用到ServiceStack.Redis V3版,不要用V4 ,v4已经商业化了,有6000次限制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ServiceStack.Redis; namespace ZhengXin.Tools
{
public class RedisUtils
{
/// <summary>
/// 默认过期时间 为秒
/// </summary>
private static int secondsTimeOut = 30 * 60; #region @Royal改进部分,能操作16个库 private static readonly Dictionary<int, PooledRedisClientManager> pools = new Dictionary<int, PooledRedisClientManager>(); static RedisUtils()
{
string path = ConfigHelper.GetConfigKeyValue("RedisPath");
string[] readWriteHosts = new string[] { path };
string[] readOnlyHosts = new string[] { path };
//初始化16个缓存库
for (int i = 0; i <= 15; i++)
{
var model = new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize = 50, // “写”链接池链接数
MaxReadPoolSize = 50, // “读”链接池链接数
AutoStart = true,
}, i, 100, 20);
pools.Add(i, model);
}
} public static PooledRedisClientManager ChooseRedisInstance(int database)
{
if (database > 16) return pools[0]; return pools[database];
} public static void Lpush(string key, string value, int database = 0)
{
using (IRedisClient redis = ChooseRedisInstance(database).GetClient())
{
redis.PushItemToList(key, value);
}
} public static string Lpop(string key, int database = 0)
{
using (IRedisClient redis = ChooseRedisInstance(database).GetClient())
{
return redis.PopItemFromList(key);
}
} public static List<string> List(string key, int database = 0)
{
using (IRedisClient redis = ChooseRedisInstance(database).GetClient())
{
return redis.GetAllItemsFromList(key);
}
} public static bool ItemSet<T>(string key, T t, int timeout = 0, int db = 2)
{
using (IRedisClient RClient = ChooseRedisInstance(db).GetClient())
{
if (timeout >= 0)
{
if (timeout > 0)
{
secondsTimeOut = timeout;
}
}
return RClient.Add<T>(key, t, TimeSpan.FromMinutes(secondsTimeOut));
} } public static T ItemGet<T>(string key, int db = 2) where T : class
{
using (IRedisClient redis = ChooseRedisInstance(db).GetClient())
{
return redis.Get<T>(key);
}
}

  

最新文章

  1. java web学习总结(十五) -------------------JSP基础语法
  2. 28. 字符串的排列之第1篇[StringPermutation]
  3. Nodejs在centos下的安装
  4. ubuntu常用快捷键
  5. java对象与xml相互转换 ---- xstream
  6. php开发客服系统(持久连接+轮询+反向ajax)
  7. IS-A 和 HAS-A
  8. BBS论坛(五)
  9. linux 中的 vim 设置粘贴板
  10. HR_Jumping on the Clouds
  11. mongoDB Liunx下安装及配置
  12. 用我所学去讲C语言指针
  13. ubuntu下解压文件命令大全(转)
  14. 20145308 《网络对抗》 Web应用 学习总结
  15. 前端-jQuery的ajax方法
  16. Vue2学习笔记:过渡效果css
  17. JQuery实现可直接编辑的表格
  18. link 标签中“rel=stylesheet”的作用
  19. USACO Section2.3 Zero Sum 解题报告 【icedream61】
  20. C#程序怎么写,效率高

热门文章

  1. Delphi 我常用的几个下载源码的站点
  2. xampp install
  3. cocos2d-x笔记2: 编译到安卓的步骤与注意事项
  4. vs2013调试崩溃,重启电脑依旧崩溃
  5. Coding.net代码托管平台建立WordPress
  6. htm、html、shtml区别
  7. C语言里的指针探析——type *name[] 在函数参数里面,是一个二维指针
  8. bzoj 2693: jzptab 线性筛积性函数
  9. javascript mvc
  10. Emily姨妈家的猫