C# Redis实战(一)
标签:comment 文件夹 rect bsp 文件中 disconf 准备 最新 more
一、初步准备
Redis 是一个开源的使用ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
本文主要讲述的是如何使用C#语言来进行Redis分布式缓存的程序编写。首先,需要从github下载最新的32/64位安装(下载地址),解压后根据自己机器的实际情况选择32位或者64位,例如:我机器是64位win7,于是将64bit下所有文件拷贝到D盘根目录下新建文件夹redis中,如图:
接下来我们需要在vs中新建一个Redis的测试Demo,并为其添加Redis程序包,如图:
至此,Redis分布式编程的准备工作已经完成,可以得到如下示例Demo效果图:
二、Redis服务
在C# Redis实战(一)中我将所有文件拷贝到了D盘redis文件夹下,其中redis-server.exe即为其服务端程序,双击即开始运行,如图
可以将此服务设置为windows系统服务,下载Redis服务安装软件,安装即可。
安装完成在服务中找到此服务,将其设置为自动延迟启动即可。
再回到redis文件夹下,找到redis-cli.exe文件,它就是Redis客户端程序。打开,输入:set qiujialong 123
即在Redis中插入了一条key为qiujialong,value为123的数据,继续输入:get qiujialong
得到value保存的数据123。
如果想知道Redis中一共保存了多少条数据,则可以使用:keys * 来查询:
以上即为Redis服务的安装与它的基本操作,再下一篇文章中将讲述如何使用C#来完成Redis分布式缓存的开发。
三、程序配置
在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行。
现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web.config文件中添加如下信息:
[html] view plain
copy
- xml version="1.0" encoding="utf-8"?>
-
- section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
- section name="RedisConfig" type="RedisDemo.RedisConfigInfo, RedisDemo"/>
- 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>
- add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-RedisDemo-20131125110945;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-RedisDemo-20131125110945.mdf" />
- connectionStrings>
-
- configuration>
有了以上信息还不够,还需要用C#代码来读取并且操作,获取Redis配置的程序如下:
[csharp] view plain
copy
- 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;
- }
Redis管理类代码:
[csharp] view plain
copy
- ///
- /// redis配置文件信息
- ///
- private static RedisConfigInfo redisConfigInfo = RedisConfigInfo.GetConfig();
-
- private static PooledRedisClientManager prcm;
-
- ///
- /// 静态构造方法,初始化链接池管理对象
- ///
- static RedisManager()
- {
- CreateManager();
- }
-
-
- ///
- /// 创建链接池管理对象
- ///
- 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());
- }
-
- ///
- /// 客户端缓存操作对象
- ///
- public static IRedisClient GetClient()
- {
- if (prcm == null)
- CreateManager();
-
- return prcm.GetClient();
- }
C# Redis实战(一)
标签:comment 文件夹 rect bsp 文件中 disconf 准备 最新 more
原文地址:https://www.cnblogs.com/Alex80/p/10061303.html
评论