基于 StackExchange.Redis 封装,用于操作 云数据库Redis企业版 的客户端,支持企业版多种 Module 的操作命令即部分高级特性。
- TairString,支持 string 设置 version,增强
cas
和cad
命令可轻松实现分布式锁。(已开源) - TairHash,可实现 field 级别的过期。(已开源)
- TairZset, 支持多维排序。(已开源)
- TairDoc, 支持存储
JSON
类型。 - TairGis, 支持地理位置点、线、面的相交、包含等关系判断。(已开源)
- TairBloom, 支持动态扩容的布隆过滤器。
- TairRoaring, Roaring Bitmap, 使用少量的存储空间来实现海量数据的查询优化。
- TairSearch,支持 ES-LIKE 语法的全文索引和搜索模块。
- TairCpc, 基于CPC(Compressed Probability Counting)压缩算法开发的数据结构,支持仅占用很小的内存空间对采样数据进行高性能计算。
- TairTs, 时序数据结构,提供低时延、高并发的内存读写访问。
本组件是基于 .NET Core 5.0 和 StackExchange.Redis2.5.61 开发,所以用户在使用过程注意安装的 .NET 版本。
该组件已上传至 Nuget,且依赖于 StackExchange.Redis,可直接在Nuget控制界面搜索AlibabaCloud.TairSDK
以及 StackExchange.Redis
进行下载安装。
private static readonly ConnectionMultiplexer connDC = ConnectionMultiplexer.Connect("localhost");
private readonly TairString tair = new(connDC, 0);
使用ConnectionMultiplexer.Connect
创建一个ConnectionMultiplexer
实例用来使用。Connect
可以传入配置字符串或者是ConfigurationOptions
对象。
一旦创建了ConnectionMultiplexer
实例,就可以访问一个redis
数据库(无论是单机还是集群)。
接下来创建相应Module
的对象,进而访问数据库。此外redis
支持多个数据库,所以在new
一个对象时,通过第二个参数指定对应的数据库。(集群不支持此功能)
对于StackExchange.Redis
,使用 ExecuteAsync
返回结果为Task<RedisResult>
类型,可使用如下方式获取真实结果:
var ret1 = tairStringAsync.exset("key", "value");
Console.WriteLine(ResultHelper.Long(ret1.Result));//输出为 "OK"
.Result
用于得到Async执行完毕的结果,ResultHelper.Long
用于将RedisResult
转换为用户需要的结果。
TairString示例如下
using System.Text;
using Alibaba.TairSDK.TairString;
using StackExchange.Redis;
namespace TestString
{
public class Program
{
private static readonly ConnectionMultiplexer connDC = ConnectionMultiplexer.Connect("localhost:6379");
private static readonly TairString tair = new(connDC, 0);
static void Main(string[] args)
{
var bkey = Encoding.UTF8.GetBytes("bkey");
var bvalue = Encoding.UTF8.GetBytes("bvalue");
var key = "key";
var value = "value";
//string
var ret = tair.exset(key, value);
Console.WriteLine(ret);
var result = tair.exget(key);
Console.WriteLine(result.getValue());
Console.WriteLine(result.getVersion());
//binary
ret = tair.exset(bkey, bvalue);
Console.WriteLine(ret);
var bresult = tair.exget(bkey);
Console.WriteLine(Encoding.UTF8.GetString(bresult.getValue()));
Console.WriteLine(bresult.getVersion());
}
}
}
更多示例请参考Alibaba.TairSDK.Tests
。