使用 Redis MQ

ClownFish对Redis的封装并不多,主要在4个方面:

  • 连接的统一管理
  • API调用性能监控
  • 发布消息
  • 订阅消息



在配置服务中注册连接

在使用Redis前,请先在在配置服务中注册连接,可参考以下界面:

xx

此处的参数值格式可参考: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以内。