/// <summary>
/// 分布式缓存
/// </summary>
public static class RedisCache
{
/// <summary>
/// 单例工厂,每次初始化redis客户端从工厂中获取
/// </summary>
private static IRedisClientFactory _factory = RedisCacheClientFactory.Instance;
/// <summary>
/// 设置redis缓存
/// </summary>
/// <typeparam name="T">泛型类</typeparam>
/// <param name="key">缓存键</param>
/// <param name="value">泛型实体</param>
/// <param name="expire">过期时间</param>
/// <returns></returns>
public static bool Set<T>(string key, T value, DateTime expire)
{
try
{
using (var client = GetClient())
{
return client.Set<T>(key, value, expire);
}
}
catch
{
return false;
}
}
/// <summary>
/// 获取缓存
/// </summary>
/// <typeparam name="T">实体</typeparam>
/// <param name="key">键值</param>
/// <returns></returns>
public static T Get<T>(string key)
{
try
{
using (var client = GetClient())
{
return client.Get<T>(key);
}
}
catch
{
//如果redis出现异常,则直接返回默认值
return default(T);
}
}
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="key"></param>
public static void Remove(string key)
{
try
{
using (var client = GetClient())
{
client.Remove(key);
}
}
catch
{ }
}
public static void RemoveAll()
{
try
{
using (var client = GetClient())
{
var keys = client.GetAllKeys();
client.RemoveAll(keys);
}
}
catch
{ }
}
/// <summary>
/// 获取客户端
/// </summary>
/// <returns></returns>
private static IRedisClient GetClient()
{
RedisClient client = null;
if (string.IsNullOrEmpty(ConfigManager.RedisServer))
{
throw new ArgumentNullException("redis server ip is empty.");
}
if (string.IsNullOrEmpty(ConfigManager.RedisPwd))
{
throw new ArgumentNullException("redis server pwd is empty.");
}
client = _factory.CreateRedisClient(ConfigManager.RedisServer, ConfigManager.RedisPort);
client.Password = ConfigManager.RedisPwd;
client.Db = ConfigManager.RedisServerDb;
return client;
}
}

用到的程序集

功能描述

可以直接缓存实体类,设置过期时间,移除缓存,获取缓存功能。

使用RedisClientFactory工厂获取redis客户端实例。如果Redis设置了密码,在配置文件中添加修改

            client = factory.CreateRedisClient(ConfigManager.RedisServer, ConfigManager.RedisPort);
client.Password = ConfigManager.RedisPwd;

修改redis的ip和端口号,密码即可。

使用场景

具体的使用过程中,使用redis的超时可以对数据进行一些持久化管理,对于一些数据一致性不高的数据进行缓存,使得读取速度提高,使用redis集群时可以是用主从复制功能,Redis集群没有中心节点,并且带有复制和故障转移特性,这可以避免单个节点成为性能瓶颈,或者因为某个节点下线而导致整个集群下线。

[Redis]c# redis缓存辅助类的更多相关文章

  1. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

  2. Net分布式系统之五:C#使用Redis集群缓存

    本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系统高并发查询,为了提供性能减 ...

  3. RabbitMQ、Memcache、Redis(队列、缓存)

    RabbitMQ 一.解释 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消 ...

  4. redis+keeplived分布式缓存

    redis(三)redis+Keepalived主从热备秒级切换 博客分类: 分布式缓存Redis redis高可用Keepalived  一 简介 安装使用centos 5.10 Master 19 ...

  5. Spring Boot使用redis做数据缓存

    1 添加redis支持 在pom.xml中添加 <dependency> <groupId>org.springframework.boot</groupId> & ...

  6. C#使用Redis集群缓存

    C#使用Redis集群缓存 本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系 ...

  7. 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis

    目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...

  8. Springboot Mybatis Redis 实现二级缓存

    前言 什么是mybatis二级缓存? 二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace. 即,在不同的sqlsession中,相同的namespace下,相同 ...

  9. 在AspNetCore 中 使用Redis实现分布式缓存

    AspNetCore 使用Redis实现分布式缓存 上一篇讲到了,Core的内置缓存:IMemoryCache,以及缓存的基础概念.本篇会进行一些概念上的补充. 本篇我们记录的内容是怎么在Core中使 ...

  10. springboot+mybatis+redis实现分布式缓存

    大家都知道springboot项目都是微服务部署,A服务和B服务分开部署,那么它们如何更新或者获取共有模块的缓存数据,或者给A服务做分布式集群负载,如何确保A服务的所有集群都能同步公共模块的缓存数据, ...

随机推荐

  1. Tomcat7.x 与 Tomcat6.x

    试用 Tomcat7.x 与 Tomcat6.x 的明显不同 + Context 填写方法 + 默认应用配置方法 标签: tomcat数据库驱动程序数据库虚拟机jdbcjavascript 2012- ...

  2. 学习笔记——Ant

    首先找个视频,你不可否认视频的确是入门最快的学习方式.入门学习视频(共两集)点我去观看 然后找一本入门级的资料看 ANT基础使用手册.pdf 现在你可以看看其他人写的脚本.估计简单的都能看懂. 然后找 ...

  3. MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part2.html 上一节 ...

  4. IT男的”幸福”生活"续4

    翻来翻去,总是睡不觉.大脑口一堆问题.一个又冒出一个,没完没了.明天该怎样去进行下一步呢.. ….. 夜一下子深黑很多,窗外的公路,时而有货车通过,动不动按喇叭,而我住在二楼,真它的吵.也许她住在五楼 ...

  5. 小白学习mysql之索引初步

    导语 索引在数据库中的地位是及其的重要,同时要想完全的掌握索引并不是一件容易的事,需要对数据的查询原理以及计算机操作系统有深刻的认识,当然相关的算法和数据结构也是必须的.因此,这篇文章感到了一些压力, ...

  6. 小白学习mysql之优化基础(EXPLAIN的连接类型)

    ## 导语很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了.这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只 ...

  7. sql server 数据库备份,完整备份,差异备份,自动备份说明

    Sql server 设置完整备份,差异备份说明 在数据库管理器中,选择要备份的数据库,右键找到“备份” 然后可以按照备份的方式进行备份. 关于文件的还原,作以下补充说明: 步骤为: 1.在需要还原的 ...

  8. javascript基础(1)

    1.前言 ECMAscript解释,用来解释JS代码 DOM 文档对象模型,浏览器在做显示时需要渲染DOM树 BOM  浏览器对象模型,可以控制浏览器的行为,代码的兼容性很差 2.基本类型 数字类型: ...

  9. git for windows 入门随笔

    引言: Git 是当前最流行的集中化的版本控制程序之一(版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统),Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件 ...

  10. iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)

    一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...