Redis缓存
定义
一、说明
REmote DIctionary Server(Redis) 是一个 key-value 存储系统,也是一个简单的非关系型数据库。
警告
此组件是基于 Dmtp 协议的 Redis。所以无法连接到常规 Redis 中。但是此组件无论是扩展性还是性能,都是远胜常规 Redis 的。
二、特性
基于 Dmtp 协议的 Redis 实现具有以下特性:
- 高性能:基于 Dmtp 协议的高效通信机制
- 强类型支持:支持泛型,可以直接存储和获取强类型数据
- 异步操作:完全支持异步操作,提高并发性能
- 可扩展性:支持自定义缓存实现,可以轻松实现持久化
- 简单易用:API 设计简洁,易于集成和使用
三、服务器配置
在服务器端,需要通过插件的方式启用 Redis 功能。
🔄 正在加载代码...
四、客户端配置
在客户端,同样需要添加 Redis 插件以启用相关功能。
🔄 正在加载代码...
五、基本使用
配置完成后,可以通过 GetDmtpRedisActor() 方法获取 Redis 操作对象,然后进行各种缓存操作。
🔄 正在加载代码...
5.1 主要方法说明
- SetAsync:设置缓存值,支持指定过期时间(毫秒)
- GetAsync:获取缓存值,支持泛型
- AddAsync:添加缓存项,如果键已存在则不进行任何操作
- ContainsCacheAsync:检查指定键是否存在
- RemoveCacheAsync:移除指定的缓存项
- ClearCacheAsync:清空所有缓存
六、缓存持久化
默认情况下,Redis 组件会使用 MemoryCache<string, ReadOnlyMemory<byte>> 作为实际存储。要实现缓存持久化,只需要替换该缓存实现即可。
🔄 正在加载代码...
6.1 自定义缓存实现
您可以实现 ICache<string, ReadOnlyMemory<byte>> 接口来创建自己的缓存持久化方案,例如:
- 基于文件的持久化
- 基于数据库的持久化
- 基于其他存储系统的持久化
只需要在配置时通过 options.Cache 属性指定自定义的缓存实现即可。
七、数据序列化
Redis 组件默认使用 BytesSerializerConverter 进行数据序列化和反序列化。该转换器支持各种常见的数据类型,包括基本类型、字符串、字节数组等。
如需使用自定义的序列化方式,可以通过 IDmtpRedisActor.Converter 属性进行设置。
八、注意事项
- 协议兼容性:此 Redis 实现基于 Dmtp 协议,与标准 Redis 协议不兼容
- 过期时间:所有缓存操作都支持设置过期时间,单位为毫秒
- 异步操作:建议使用异步方法以获得最佳性能
- 类型安全:使用泛型方法时,确保存储和读取的类型一致