十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一文教你正确的使用Redis?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
专注于为中小企业提供成都做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业庄河免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。官网提供的Redis安装包是服务于Linux的,而我们需要在Window下使用Redis,
如下图所示,Redis的windows版是由microsoftarchive提供,是微软的一个工作小组,所以我们可以选择完全信任,下面我们选择新版的Redis版本下载(可以看到,尽管是新版本,但最后一次提交已经是2016年了)
下载完成后解压到文件夹,得到文件如下:
重要文件讲解:
redis-server.exe:Redis服务端宿主程序,运行后会启动一个控制台窗体,该窗体是宿主程序,如关闭窗体,则Redis服务关闭。
redis-check-dump.exe:本地数据库检查程序。
redis-check-aof.exe:更新日志检查程序。
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询。
redis-cli.exe: Redis客户端程序,服务端开启后,可以通过该客户端进行命令测试。(运行后,会启动一个控制台窗体,可在控制台内输入命令)
Windows Service Documentation.docx:Redis服务端使用文档。
redis.windows-service.conf:Redis启动服务默认加载的配置文件(下文会介绍如何将Redis服务已Windows服务模式启动),双击redis-server.exe启动时并不加载该文件,双击exe启动时会提示未指定配置文件,使用默认配置,这个默认配置应该是exe内部编写的。
redis.windows.conf :Redis配置文件,其内容和redis.windows-service.conf是一模一样的,相当于一个备份,如果希望Redis读取的配置文件是redis.windows.conf ,则需要对Redis进行命令操作,重新设置配置文件。
了解Redis文件信息后,我们运行redis-server.exe,然后我们编写一个C#的控制台项目访问Redis。
C#想访问Redis需要使用开源类库,那么应该使用哪个类库呢?
打开Redis的中文官网http://www.redis.cn/,在客户端菜单下可以发现C#可用的Redis客户端很多,如下图:
这里我们使用ServiceStack.Redis来访问Redis。
首先我们创建一个项目RedisConsole,然后在Nuget下搜索ServiceStack.Redis,如下图:
然后创建一个RedisManager类来管理Redis,代码如下:
using ServiceStack.Redis; using ServiceStack.Text; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace RedisConsole { ////// RedisManager类主要是创建链接池管理对象的 /// public class RedisManager { ////// 绑定本机Redis /// private static string ConnStr = "localhost:6379";//password@ip:port 123@localhost:6379 private static PooledRedisClientManager _prcm; ////// 静态构造方法,初始化链接池管理对象 /// static RedisManager() { _prcm = CreateManager(new string[] { ConnStr }, new string[] { ConnStr }); } ////// 创建链接池管理对象 /// private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts) { //WriteServerList:可写的Redis链接地址。 //ReadServerList:可读的Redis链接地址。 //MaxWritePoolSize:较大写链接数。 //MaxReadPoolSize:较大读链接数。 //AutoStart:自动重启。 //LocalCacheTime:本地缓存到期时间,单位:秒。 //RecordeLog:是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项。 //RedisConfigInfo类是记录redis连接信息,此信息和配置文件中的RedisConfig相呼应 // 支持读写分离,均衡负载 return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig { MaxWritePoolSize = 5, // “写”链接池链接数 MaxReadPoolSize = 5, // “读”链接池链接数 AutoStart = true, }, 0,//初始化数据库 默认有16个数据 这里设置初始化为第0个 50,//连接池数量 5//连接池超时秒数 ) { ConnectTimeout = 6000,//连接超时时间,毫秒 SocketSendTimeout = 6000,//数据发送超时时间,毫秒 SocketReceiveTimeout = 6000,// 数据接收超时时间,毫秒 IdleTimeOutSecs = 60,//连接较大的空闲时间 默认是240 PoolTimeout = 6000 //连接池取链接的超时时间,毫秒 }; } ////// 客户端缓存操作对象 /// public static IRedisClient GetClient() { if (_prcm == null) { _prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath }); } return _prcm.GetClient(); } } }