首页 > 编程知识 正文

redis缓存服务器作用(redis搭建)

时间:2023-05-05 17:25:26 阅读:81291 作者:2738

让我们正式分享今天的文章: 构建Redis服务器端,在客户端进行连接。 封装缓存的父类,并定义Get、Set等常用方法。 定义RedisCache高速缓存类,然后执行Redis的Get、Set方法。 构建缓存工厂调用方法

下一步分享吧: 构建Redis服务器端,在客户端进行连接

首先,如何在这个地址下载安装文件https://github.com/dmajkic/redis/downloads? 这个版本在redis-2.4.5-win32-win64上有32位和64位的可执行文件。 这个服务器是64位的

现在,您可以通过双击名为redis-server.exe的APP位置来打开redis服务窗口。 (也可以下载windows服务载体,在windows服务上运行redis服务。 不必担心每次关闭redis服务器上的黑色表单时都无法访问redis。 )

如果有红色方块的信息,就表示成功了。 其中,redis服务接收的端口默认为6379。 要更改端口或更高的配置信息,请查找redis.conf配置文件

然后,打开客户端连接服务器端,如何返回到64位文件夹的目录,将鼠标移动到64位文件夹,安装Shift键,点击鼠标右键,选择“在此打开命令窗口” (其他进入方法在此不做介绍。 因为我个人觉得这是最快的)然后在命令窗口中输入redis-cli.exe -h localhost -p 6379访问服务器端。 效果图:

让我们看一下服务器端表单的屏幕快照:

是的。 现在,客户端连接到服务器端,可以轻松地在客户端执行set、get命令。

如果客户端要访问远程redis服务器端,只需要将localhost更改为可访问的ip即可。 如果需要更多配置(如密码),请链接到上面的地址。 封装缓存的父类,并定义Get、Set等常用方法

首先,进入父类的代码。

此处定义的方法没有太多注释。 我想更多的意思是看方法名称就知道了,这个父类主要实现IDisposable,在实现的Dispose ()中主要释放资源,publicvirtualvoiddispose ) ) boolisfalse 这里面有个词叫GC .意思是根据官网,阻止自动释放资源。 其他什么也没有。 请继续看下一个

。 定义RedisCache高速缓存类,然后执行Redis的Get、Set方法

首先,分别定义类RedisCache、MemcachedCache (这里还没有实现对memcache缓存的操作),继承BaseCache,将Set、Get方法写入下面的代码中

其中,nuget包引用了要使用的redis客户端类。 其中,nuget软件包如下:

接下来,让我们看一下重写的InitCache方法。 它有几个ip、端口、密码和密码参数。 这里直接写入cs文件,没有从配置文件读取。 大家可以扩展。 这些参数通过RedisCli

ent构造函数传递给底层Socket访问需要的信息,下面简单展示下RedisClient几个的构造函数:

1 public RedisClient();

2 public RedisClient(RedisEndpoint config);

3 public RedisClient(string host);

4 public RedisClient(Uri uri);

5 public RedisClient(string host, int port);

6 public RedisClient(string host, int port, string password = null, long db = 0);

至于Get,Set方法最终都是使用RedisClient对象访问的,个人觉得需要注意的是Set方法里面的过期时间参数,目前还没有试验这种情况的效果:

?通过这几种方法设置过期时间后,快到过期时间的时候如果此时有使用这个缓存key那么过期时间是否会往后自动增加过期时间有效期,这里暂时没有试验(这里是由于前面项目中的.net core框架中的memecache缓存都有这种设置,想来redis应该也有吧)

这里,需要重写下public override void Dispose(bool isfalse)方法,因为调用完RedisClient后需要释放,我们通过Dispose统一来手动释放,而不是直接在调用的时候使用using()

构造出缓存工厂调用方法

接下来,咋们需要定义一个缓存工厂,因为上面刚才定义了一个RedisCache和MemcachedCache明显这里会有多个不同缓存的方法调用,所用咋们来定义个工厂模式来调用对应的缓存;这里的工厂模式没有使用直接显示创建new RedisCache(),new MemcachedCache()对象的方法,而是使用了反射的原理,创建对应的缓存对象;

先来,定义个枚举,枚举里面的声明的名字要和咋们缓存类的名称相同,代码如下:

1 public enum CacheType

2 {

3 RedisCache,

4

5 MemcachedCache

6 }

再来,定义个工厂来CacheRepository(缓存工厂),并且定义方法Current如下代码:

1 public static BaseCache Current(CacheType cacheType = CacheType.RedisCache)

2 {

3 var nspace = typeof(BaseCache);

4 var fullName = nspace.FullName;

5 var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);

6

7 return Assembly.GetExecutingAssembly().CreateInstance(nowspace + cacheType.ToString(), true) as BaseCache;

8 }

*:通过传递枚举参数,来确定反射CreateInstance()方法需要用到的typeName参数,从而来定义需要访问的那个缓存对象,这里要注意的是加上了一个命名空间nowspace,因为缓存类可能和工厂类不是同一个命名空间,但是通常会和缓存基类是同命名空间所以在方法最开始的时候截取获取了缓存类需要的命名空间(这里看自身项目来定吧);

*:Assembly.GetExecutingAssembly()这个是用来获取当前应用程序集的路径,这里就避免了咋们使用Assembly.Load()方法还需要传递程序集的路径地址了

好了满上上面要求后,咋们可以在测试页面调用代码如:CacheRepository.Current(CacheType.RedisCache).SetCache<MoFlightSearchResponse>(keyData, value);就如此简单,咋们使用redis-cli.exe客户端来看下缓存起来的数据:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。