[Redis]c# redis缓存辅助类

using NServiceKit.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace H5.Utility
{
    /// <summary>
    /// 分布式缓存
    /// </summary>
    public static class RedisCache
    {
        private static IRedisClient RCClient = null;
        /// <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 (RCClient = GetClient())
                {
                    return RCClient.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 (RCClient = GetClient())
                {
                    return RCClient.Get<T>(key);
                }
            }
            catch
            {
                //如果redis出现异常,则直接返回默认值
                return default(T);
            }
        }
        /// <summary>
        /// 移除缓存
        /// </summary>
        /// <param name="key"></param>
        public static void Remove(string key)
        {
            using (RCClient = GetClient())
            {
                RCClient.Remove(key);
            }
        }
        /// <summary>
        /// 获取客户端
        /// </summary>
        /// <returns></returns>
        private static IRedisClient GetClient()
        {
            RedisClientFactory factory = RedisClientFactory.Instance;
            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集群没有中心节点,并且带有复制和故障转移特性,这可以避免单个节点成为性能瓶颈,或者因为某个节点下线而导致整个集群下线。

转载:博客地址:http://www.cnblogs.com/wolf-sun/

时间: 2024-10-31 20:24:20

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

SpringBoot集成Redis来实现缓存技术方案

概述 在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件,Redis 的优势包括它的速度.支持丰富的数据类型.操作原子性,以及它的通用性. 案例整合 本案例是在之前一篇SpringBoot + Mybatis + RESTful的基础上来集

Spring整合Redis做数据缓存(Windows环境)

当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是用java开发的缓存组件,和java结合良好,直接在jvm虚拟机中运行,不需要额外安装什么东西,效率也很高:但是由于和java结合的太紧密了,导致缓存共享麻烦,分布式集群应用不方便,所以比较适合单个部署的应用. Redis需要额外单独安装,是通过socket访问到缓存服务,效率比Ehcache低,但

redis文档翻译_LRU缓存

Using Redis as an LRU cache使用Redis作为LRU缓存 出处:http://blog.csdn.net/column/details/redisbanli.html When Redis is used as a cache, sometimes it is handy to let it automatically evict old data as you add new one. This behavior is very well known in the c

C#使用Redis集群缓存

C#使用Redis集群缓存 本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系统高并发查询,为了提供性能减少数据库压力,我们加入缓存机制,可以不同层次加入缓存支持,本文主要介绍应用服务层和数据层之间加入缓存机制提升性能.业界缓存组件有Redis.Memcached.MemoryCache.本系统采用Redis缓存组件,有些系统将Redis当作MQ使用,此场景本系统用Rabbi

Magento2使用Redis进行页面缓存或会话存储。

1.Redis是一个可选的后端缓存解决方案,不过magento2默认使用的是Zend_Cache_Backend_File 2.Zend_Cache_Backend_File的问题 core_cache_tag表不断增长. 如果Magento实例具有多个网站和具有大型目录的网络商店,则该表可在不到一天内增长到1500万条记录. 插入到core_cache_tag会导致MySQL服务器的问题,包括性能降低. 3.为什么使用Redis Redis也可以用于PHP会话存储,使得可以使用Redis完全替

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

本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层. 一.背景 系统考虑到高并发的使用场景.对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决.对于系统高并发查询,为了提供性能减少数据库压力,我们加入缓存机制,可以不同层次加入缓存支持,本文主要介绍应用服务层和数据层之间加入缓存机制提升性能.业界缓存组件有Redis.Memcached.MemoryCache.本系统采用Redis缓存组件,有些系统将Redis当作MQ使用,此场景本系统用RabbitMQ,Redis主要用于系

Spring Boot使用redis实现数据缓存

基于Spring Boot 1.5.2.RELEASE版本,一方面验证与Redis的集成方法,另外了解使用方法. 集成方法 配置依赖 修改pom.xml,增加如下内容. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置Redis

如何用REDIS实现分布式缓存

摘要: 第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Struct

redis和memcached缓存

memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现memcached缓存 pip3 install python-memcached import memcache aa=memcache.Client(["10.0.0.20:11211"],debug=True) aa.set("k1","v1"

SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 整体思路 pomxml中加入Maven依赖 引入applicationContextxml中引入redis配置 创建缓存实现类RedisCache 创建中间类RedisCacheTransfer完成RedisCachejedisConnectionFactory的静态注入 配置文件redisproperties mapper中加入MyBatis二级缓存 Mybatis全局配置 打印Sql日志方便测试 测试代码 项目环境: 在