---
id: dmtpredis
title: Redis缓存
---

### 定义

命名空间：TouchSocket.Dmtp <br/>
程序集：[TouchSocket.Dmtp.dll](https://www.nuget.org/packages/TouchSocket.Dmtp)

## 一、说明

REmote DIctionary Server(Redis) 是一个key-value存储系统，也是一个简单的非关系型数据库。

:::caution 警告

此组件是基于Dmtp协议的Redis。所以无法连接到常规Redis中。但是此组件无论是扩展性还是性能，都是远胜常规Redis的。

:::  

## 二、使用

Redis是由RedisFeature功能插件提供的，所以需要添加`UseDmtpRedis`。

```csharp showLineNumbers
.ConfigurePlugins(a =>
{
    a.UseDmtpRedis();//添加Redis功能插件
})
```

【请求端】

```csharp showLineNumbers
var client = GetTcpDmtpClient();

//获取Redis
var redis = client.GetDmtpRedisActor();

//执行Set
var result = redis.Set("1", "1");
client.Logger.Info($"Set result={result}");
client.Logger.Info($"ContainsCache result={redis.ContainsCache("1")}");

//执行Get
var result1 = redis.Get<string>("1");
client.Logger.Info($"Get result={result}");

//执行Remove
result = redis.RemoveCache("1");
client.Logger.Info($"Get result={result}");
redis.ClearCache();
```

## 三、缓存持久化

默认情况下，Redis组件会使用`MemoryCache<string, byte[]>`作为实际储存。所以要实现缓存持久化，只需要替换该缓存、或者保存该缓存即可。

```csharp showLineNumbers
.ConfigurePlugins(a =>
{
    a.UseDmtpRedis()//必须添加Redis访问插件
    .SetCache(new MemoryCache<string, byte[]>());//这里可以设置缓存持久化，此处仍然是使用内存缓存。
})
```

[本文示例Demo](https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/Dmtp/DmtpRedisConsoleApp)