• .NET下添加Redis


    Redis 是一个开源的使用ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
    本文主要讲述的是如何使用C#语言来进行Redis分布式缓存的程序编写。首先,需要从github下载最新的32/64位安装,解压后根据自己机器的实际情况选择32位或者64位,例如:我机器是64位win7,于是将64bit下所有文件拷贝到D盘根目录下新建文件夹redis中,或者直接下载Redis服务(可以将此服务设置为windows系统服务,下载Redis服务安装软件,安装即可。),我个人比较喜欢这个。

    第一步,从Nuget下载Redis,我用的是ServiceStack.Redis,新版本是5.0.2,我怕不稳定,下载了5.0.0

    添加后自动引用Dll

    第二步,在配置文件添加redis的相关配置

     <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
         <section name="RedisConfig" type="GTA.FTRTP.Common.Redis.RedisConfigInfo, GTA.FTRTP.Common" />
    
      <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      </configSections>
      <RedisConfig WriteServerList="127.0.0.1:6379" ReadServerList="127.0.0.1:6379" MaxWritePoolSize="60" MaxReadPoolSize="60" AutoStart="true" LocalCacheTime="180" RecordeLog="false">  
      </RedisConfig>  
      <connectionStrings>

    第三步,添加一些基本的读写操作

      public class RedisConfigInfo: ConfigurationSection
        {
            public static RedisConfigInfo GetConfig()
            {
                RedisConfigInfo section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
                return section;
            }
    
            public static RedisConfigInfo GetConfig(string sectionName)
            {
                RedisConfigInfo section = (RedisConfigInfo)ConfigurationManager.GetSection("RedisConfig");
                if (section == null)
                    throw new ConfigurationErrorsException("Section " + sectionName + " is not found.");
                return section;
            }
            /// <summary>
            /// 可写的Redis链接地址
            /// </summary>
            [ConfigurationProperty("WriteServerList", IsRequired = false)]
            public string WriteServerList
            {
                get
                {
                    return (string)base["WriteServerList"];
                }
                set
                {
                    base["WriteServerList"] = value;
                }
            }
    
    
            /// <summary>
            /// 可读的Redis链接地址
            /// </summary>
            [ConfigurationProperty("ReadServerList", IsRequired = false)]
            public string ReadServerList
            {
                get
                {
                    return (string)base["ReadServerList"];
                }
                set
                {
                    base["ReadServerList"] = value;
                }
            }
               …………
    }
     public class RedisManager
        {
            /// <summary>
            /// redis配置文件信息
            /// </summary>
            private static RedisConfigInfo redisConfigInfo = RedisConfigInfo.GetConfig();
    
            private static PooledRedisClientManager prcm;
    
            /// <summary>
            /// 静态构造方法,初始化链接池管理对象
            /// </summary>
            static RedisManager()
            {
                CreateManager();
            }
    
    
            /// <summary>
            /// 创建链接池管理对象
            /// </summary>
            private static void CreateManager()
            {
                string[] writeServerList = SplitString(redisConfigInfo.WriteServerList, ",");
                string[] readServerList = SplitString(redisConfigInfo.ReadServerList, ",");
    
                prcm = new PooledRedisClientManager(readServerList, writeServerList,
                                 new RedisClientManagerConfig
                                 {
                                     MaxWritePoolSize = redisConfigInfo.MaxWritePoolSize,
                                     MaxReadPoolSize = redisConfigInfo.MaxReadPoolSize,
                                     AutoStart = redisConfigInfo.AutoStart,
                                 });
            }
    
            private static string[] SplitString(string strSource, string split)
            {
                return strSource.Split(split.ToArray());
            }
    
            /// <summary>
            /// 客户端缓存操作对象
            /// </summary>
            public static IRedisClient GetClient()
            {
                if (prcm == null)
                    CreateManager();
    
                return prcm.GetClient();
            }
    
        }

    第四步,在controller直接引用贴出部分代码

      var redis = RedisManager.GetClient();
                var redsiClass = redis.Get<Class>("All");//判断是否已经缓存
                if (redsiClass != null)
                {
                    model = redsiClass;
                }
                else 
                {
                    var entity = db.Class.FirstOrDefault(e => e.ClassId == StringKeys.UniversityId);
    
                    var getClassList = ClassRepository.GetClassListByParentId(StringKeys.UniversityId).OrderBy(a => a.ClassId);
                    var firstOrDefault = getClassList.FirstOrDefault();
                    model.CollageId = firstOrDefault != null ? firstOrDefault.ClassId : 0;
    
                  
                    redis.Set<Class>("All", model);//没有则进行添加
    
                    db.Dispose();
                }

    第五步,如果是有新的数据生成应该删除缓存存数据到数据库的

      public void Remove(string value)
            {
                var redis = RedisManager.GetClient();
                redis.Remove(value);
             
            }

    以上就是redis简单的使用。

    如果想要具体的实现步骤可以进CSDN下载相关源码:http://download.csdn.net/download/songlhua/10266722?from=singlemessage&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1

  • 相关阅读:
    修改Echarts 图表的坐标轴的文本的排列位置
    dataTable组件使用
    jeecg使用uploadify上传组件
    session属性的清除和非法登录
    Freemaker模板指令
    Freemarker的循环通过assign指令引入计数变量
    测试计划模板
    python+requests接口自动化测试框架实例详解教程(米兔888)
    jmeter(二十二)内存溢出原因及解决方法
    Jmeter(四)_逻辑控制器详解
  • 原文地址:https://www.cnblogs.com/songStar/p/8493645.html
Copyright © 2020-2023  润新知