客户端库

Azure Redis 缓存基于 Redis 开源内存中数据存储。 许多编程语言的 Redis 客户端可以访问 Azure Redis。 应用程序可以使用与开源 Redis 兼容的任何客户端库连接到 Azure Redis 缓存。

每个客户端库都有自己的 API,它使用 Redis 命令调用 Redis 服务器。 客户端库旨在与任何 Redis 服务器通信。

客户端维护自己的库的参考文档,并提供链接,通过客户端库开发人员社区获取支持。 Microsoft和 Azure Redis 团队不拥有任何客户端库的开发或支持。

Microsoft和 Azure Redis 确实建议一些库,具体取决于受欢迎程度以及是否有活跃的在线支持社区来回答问题。 这些库处于积极开发阶段,并且通常会发布具有可靠性和性能改进的新版本。 Microsoft建议使用最新的可用版本,并在新版本可用时定期升级。

下表列出了一些建议的客户端库的链接和文档。

客户端库 语言 GitHub 存储库 文档
StackExchange.Redis C#/.NET https://github.com/StackExchange/StackExchange.Redis StackExchange.Redis
Jedis 爪哇岛 https://github.com/redis/jedis
生菜 爪哇岛 https://github.com/lettuce-io/ Lettuce - 高级 Java Redis 客户端
雷迪森 爪哇岛 https://github.com/redisson/redisson Redisson - Redis Java 客户端 Real-Time 数据平台
ioredis Node.js https://github.com/luin/ioredis
node_redis Node.js https://github.com/redis/node-redis

注意

应用程序可以使用与开源 Redis 兼容的任何客户端库连接到 Azure Redis 实例。

特定于客户端库的指南

有关特定于客户端库的指南和最佳做法,请参阅以下链接:

如何使用客户端库

除了参考文档,还可以使用以下教程来开始使用不同语言和缓存客户端的 Azure Redis:

雷迪森 (Java) 的最佳做法

下面是 Redisson 客户端库的一些建议最佳做法:

  • 使用雷迪森 3.14.1 或更高版本。 旧版本包含已知的连接泄漏问题,这些问题会导致故障转移后出现问题。

  • 请查看 Redisson 更改日志,以了解可能影响您应用程序特性的已知问题。 有关详细信息,请参阅《雷迪森发布历史》和《雷迪森常见问题解答》。

  • 在不想使用从副本读取策略时,请修改readMode配置设置。 与其他一些客户端不同,Redisson 默认使用从副本读取

  • 若要降低主动重新连接行为或 连接风暴的风险,请考虑设置更少的最小连接。

    Redisson 有一个连接池策略,具有可配置的最小和最大设置,并且默认的最小值很大。 较大的默认值可能会导致激进的重新连接行为,又称“连接风暴”。 若要降低此风险,请考虑使用更少的连接。 可以通过几个连接有效地传输命令或一组命令。

  • 如有必要,重置空闲连接超时。 Redisson 具有默认的 10 秒空闲连接超时时间,这可能会导致连接关闭和重开的次数多于理想情况。

  • 有关使用 Redisson 和 Java EE JCache 配合将 HTTP 会话状态存储在 Azure Kubernetes 服务(AKS)群集上的信息,请参阅 将 Azure Redis 用作 WebSphere Liberty 或 Open Liberty 的会话缓存

  • 对群集模式使用以下建议的基线配置,并根据需要对其进行修改。

    clusterServersConfig:
      idleConnectionTimeout: 30000
      connectTimeout: 15000
      timeout: 5000
      retryAttempts: 3
      retryInterval: 3000
      checkLockSyncedSlaves: false
      failedSlaveReconnectionInterval: 15000
      failedSlaveCheckInterval: 60000
      subscriptionsPerConnection: 5
      clientName: "redisson"
      loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
      subscriptionConnectionMinimumIdleSize: 1
      subscriptionConnectionPoolSize: 50
      slaveConnectionMinimumIdleSize: 2
      slaveConnectionPoolSize: 24
      masterConnectionMinimumIdleSize: 2
      masterConnectionPoolSize: 24
      readMode: "MASTER"
      subscriptionMode: "MASTER"
      nodeAddresses:
      - "redis://mycacheaddress:6380"
      scanInterval: 1000
      pingConnectionInterval: 60000
      keepAlive: false
      tcpNoDelay: true