[Redis]c# redis缓存辅助类
/// <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缓存辅助类的更多相关文章
- redis和memcached缓存
memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...
- Net分布式系统之五:C#使用Redis集群缓存
本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系统高并发查询,为了提供性能减 ...
- RabbitMQ、Memcache、Redis(队列、缓存)
RabbitMQ 一.解释 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消 ...
- redis+keeplived分布式缓存
redis(三)redis+Keepalived主从热备秒级切换 博客分类: 分布式缓存Redis redis高可用Keepalived 一 简介 安装使用centos 5.10 Master 19 ...
- Spring Boot使用redis做数据缓存
1 添加redis支持 在pom.xml中添加 <dependency> <groupId>org.springframework.boot</groupId> & ...
- C#使用Redis集群缓存
C#使用Redis集群缓存 本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系 ...
- 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis
目的:解决单机session不能共享问题,插入查询数据库时间效率问题,实现分布式缓存. 准备材料:Redis 下载链接 http://pan.baidu.com/s/1dEGTxvV 相关jar包如果 ...
- Springboot Mybatis Redis 实现二级缓存
前言 什么是mybatis二级缓存? 二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace. 即,在不同的sqlsession中,相同的namespace下,相同 ...
- 在AspNetCore 中 使用Redis实现分布式缓存
AspNetCore 使用Redis实现分布式缓存 上一篇讲到了,Core的内置缓存:IMemoryCache,以及缓存的基础概念.本篇会进行一些概念上的补充. 本篇我们记录的内容是怎么在Core中使 ...
- springboot+mybatis+redis实现分布式缓存
大家都知道springboot项目都是微服务部署,A服务和B服务分开部署,那么它们如何更新或者获取共有模块的缓存数据,或者给A服务做分布式集群负载,如何确保A服务的所有集群都能同步公共模块的缓存数据, ...
随机推荐
- Caffe学习系列(17):模型各层数据和参数可视化
cifar10的各层数据和参数可视化 .caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1p ...
- Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager
action来实现tab标签 并跟fragment结合 因为要写新闻客户端这个tab导航是必须的 这里我写几个小练习,希望大家融会贯通. 1actionbar设置tab +fragment 布局是个l ...
- [MetaHook] Load DTX texture to OpenGL
This function load a LithTech *.dtx texture file and convert to OpenGL pixel format, compressed supp ...
- count(*) vs count(1)--social.msdn.microsoft.com
Clever response Dave, but insufficient. I'll admit I've suggested this myself for certain questions ...
- [MCSM] 蒙特卡罗统计方法
起因 最开始的时候,写多了LDPCC误码率的仿真,心中便越来越有了疑惑.误码率仿真,多为Monte Carlo仿真,其原理是什么,仿真结果是否可靠,可靠程度是多少,如何衡量其可靠性这些问题我都很不清楚 ...
- [转] Sublime Text 3支持GB2312和GBK编码
Sublime Text 3与Sublime Text 2的不同 其实有不少人写过如何让Sublime Text 2支持GB2312和GBK编码,例如这篇.基本原理就是先装好Package Contr ...
- 扫描二维码下载安装apk的app
将apk文件放到服务器上,下载链接直接生成二维码,用微信扫描时不能直接下载.页面只是刷新一下. 想实现微信扫描下载apk的app客户端,需要把下载链接做到一个网页上, 将网页生成一个二维码. 直接下载 ...
- Socket网络编程--FTP客户端(1)(Windows)
已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解FTP作用 就是一个提供一个文件的共享协议. 1.了解FTP协议 ...
- cryptdb中wrapper.lua的分析
因为cryptDB是在mysql-proxy的基础上来实现了,可以看成是为mysql-proxy添加了新的.为mysql-proxy已经为开发人员提供了相应的接口.如果开发人员只需要通过lua脚本语言 ...
- Moqui学习之数据与资源
资源位置: 资源门面位置的字符串类似于URL的构成方式:协议,主机,可选端口和文件名.它支持标准的java URL协议(http https ftp jar file).同样也支持一些扩展的协议: c ...