你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 托管 Redis(预览版)开发常见问题解答

本文提供有关如何开发 Azure 托管 Redis(预览版)的常见问题的解答。

如何开始使用 Azure 托管 Redis(预览版)?

可以通过多种方式开始使用 Azure 托管 Redis(预览版)。

如果还没有 Azure 帐户,可以:

  • 免费注册 Azure 帐户。 获取可用来尝试付费版 Azure 服务的信用额度。 即使在信用额度用完之后,也可以保留帐户和使用免费的 Azure 服务和功能。
  • 激活 Visual Studio 订户权益。 MSDN 订阅每月提供可用来试用付费版 Azure 服务的信用额度。

StackExchange.Redis 配置选项有什么作用?

StackExchange.Redis 有很多选项。 本部分介绍一些常用设置。 有关 StackExchange.Redis 选项的详细详细,请参阅 StackExchange.Redis 配置

配置选项 说明 建议
AbortOnConnectFail 如果设置为 true,则发生网络故障后无法重新建立连接。 设置为 false,让 StackExchange.Redis 自动重新连接。
ConnectRetry 初始连接期间重试连接的次数。 请参阅下面的注释寻求指导。
ConnectTimeout 连接操作的超时,以毫秒为单位。 请参阅下面的注释寻求指导。

通常情况下,使用客户端的默认值便已足够。 可以根据工作负荷微调选项。

重试

  • 对于 ConnectRetry 和 ConnectTimeout,一般指导原则是快速失败并重试。 此指导取决于工作负载,以及客户端发出 Redis 命令和接收响应平均花费的时间。
  • 让 StackExchange.Redis 自动重新连接,而不是检查连接状态,并由用户自己重新连接。 避免使用 ConnectionMultiplexer.IsConnected 属性
  • 雪球效应 - 可能会遇到这样的问题:不断地重试,但重试只是不断累积而永远无法恢复。 如果发生雪球效应,应该根据 Microsoft 模式和实践小组发布的一般重试指导原则中所述,考虑使用指数退让重试算法。

超时值

  • 考虑工作负载,并设置匹配的值。 如果要存储较大值,应将超时设置为更大的值。
  • AbortOnConnectFail 设置为 false,让 StackExchange.Redis 重新连接。
  • 使用一个长期使用的 ConnectionMultiplexer 实例,而不是为每个请求新建连接。
  • ConnectionMultiplexer.ClientName 属性设置为应用程序实例的唯一名称以进行诊断。
  • 对自定义工作负载使用多个 ConnectionMultiplexer 实例。
    • 如果应用程序中的负载不同,可以遵循此模型。 例如:
    • 可以使用一个多路复用器来处理大键。
    • 可以使用一个多路复用器来处理小键。
    • 可为连接超时设置不同的值,并为使用的每个 ConnectionMultiplexer 设置重试逻辑。
    • 在每个多路复用器上设置 ClientName 属性以帮助进行诊断。
    • 此指导可以更好地改进每个 ConnectionMultiplexer 的延迟。

可以使用哪些 Redis 客户端?

Redis 的一大优势是有许多客户端,支持许多不同的开发语言。 如需最新的客户端列表,请参阅 Redis 客户端。 要获取涵盖几种不同语言和客户端的教程,请参阅如何使用 Azure 托管 Redis

Azure 托管 Redis 是否有本地模拟器?

Azure 托管 Redis 没有本地模拟器。 但可以在本地计算机上运行社区 Redis 的副本并连接到该副本,以获得与本地缓存模拟器类似的体验,如以下示例所示:

private static Lazy<ConnectionMultiplexer>
    lazyConnection = new Lazy<ConnectionMultiplexer> (() =>
    {
        // Connect to a locally running instance of Redis to simulate
        // a local cache emulator experience.
        return ConnectionMultiplexer.Connect("127.0.0.1:6379");
    });

public static ConnectionMultiplexer Connection
{
    get
    {
        return lazyConnection.Value;
    }
}

Redis 在 Linux 上本机运行,但你也可以使用适用于 Linux 的 Windows 子系统在 Windows 计算机上运行 Redis。 有关详细信息,请参阅在 Windows 上安装 Redis

如何运行 Redis 命令?

可以使用 Redis 命令中列出的任何命令,但 Azure 托管 Redis 中不支持的 Redis 命令所列的命令除外。 可以使用多个选项来运行 Redis 命令。

还可以使用 Redis 命令行工具。 要使用它们,请参阅将 Redis 命令行工具与 Azure 托管 Redis 配合使用

Azure 托管 Redis 为什么没有 MSDN 类库参考?

Microsoft Azure 托管 Redis 基于常见的内存中数据存储 Redis。 对于许多编程语言而言,可以通过各种 Redis 客户端。 每个客户端有自身的 API,用于通过 Redis 命令调用 Azure 托管 Redis 实例。

由于每个客户端不同,因此 MSDN 无法在一个集中的位置提供类参考。 每个客户端维护自身的参考文档。 除了参考文档以外,还可以参阅多个教程,这些教程介绍了如何通过不同的语言和缓存客户端来开始使用 Azure 托管 Redis。 若要访问这些教程,请参阅如何使用 Azure 托管 Redis 以及它在内容列表中的同级文章。

什么是 Redis 数据库?

Redis 数据库就是同一 Redis 实例中的数据的逻辑隔离。 缓存内存在所有数据库之间共享,给定数据库的实际内存消耗取决于该数据库中存储的键/值。 目前,Azure 托管 Redis 仅支持每个实例一个数据库。

了解其他 Azure 托管 Redis 常见问题解答