使用 Redis MQ
ClownFish对Redis的封装并不多,主要在4个方面:
- 连接的统一管理
- API调用性能监控
- 发布消息
- 订阅消息
在配置服务中注册连接
在使用Redis前,请先在在配置服务中注册连接,可参考以下界面:
此处的参数值格式可参考:https://stackexchange.github.io/StackExchange.Redis/Configuration#basic-configuration-strings
调用 Redis API
可参考以下代码
[HttpGet, HttpPost]
[Route("string-demo.aspx")]
public async Task<object> StringDemo()
{
IDatabase db = ClownFish.NRedis.Redis.GetDatabase();
await db.StringSetAsync("kk101", DateTime.Now.Ticks.ToString());
await db.StringSetAsync("kk102", Guid.NewGuid().ToString());
string value1 = await db.StringGetAsync("kk101");
string value2 = await db.StringGetAsync("kk102");
return new {
kk101 = value1,
kk102 = value2
};
}
核心部分就是得到 IDatabase实例
IDatabase db = ClownFish.NRedis.Redis.GetDatabase();
剩下的就是调用 Redis API
发布消息
示例代码:
[HttpPost]
[Route("sendmessage.aspx")]
public int Send(Product product)
{
int index = Interlocked.Increment(ref s_index);
product.Remark = $"Redis message - {index}, {DateTime.Now.ToTimeString()}";
// channel 取Product的类型全名
Redis.GetClient().SendMessage(product);
return index;
}
订阅消息
RedisSubscriber.Start<Product, PrintMessageHandler>(new RedisSubscriberArgs {
SettingName = "redis.Connection", // 连接的配置名称
Channel = null, // null 表示使用Product的类型全名代替
RetryCount = 5, // 重试次数
RetryWaitMilliseconds = 1000 // 重试的间隔时间
});
注意事项
- 不要把Redis当成数据库,它只是一个缓存服务!
- 所有写入Redis的数据都需要 设置过期时间
- 禁止将较大的数据块写入Redis,尽量控制数据长度在256K以内。