Azure 受控 Redis (預覽) 客戶端連結庫
Azure Managed Redis (預覽版) 是以熱門的記憶體內部資料存放區 Redis 為基礎。 適用於許多程式設計語言的 Redis 用戶端可以存取 Azure 受控 Redis。 每個用戶端程式庫都有自己的 API,可使用 Redis 命令來呼叫 Redis 伺服器,但會建置用戶端程式庫來與任何 Redis 伺服器通訊。
每個用戶端程式庫都維護自己的參考文件。 這些程式庫還提供相關連結,可讓使用者取得來自用戶端程式庫開發人員社群的支援。 Azure Managed Redis 團隊不負責任何用戶端程式庫的開發或支援。
下列建議是以受歡迎程度為基礎,以及是否有作用中的在線社群可支援和回答您的問題。 僅建議您使用最新可用的版本,並在新版本可供使用時定期升級。 這些程式庫在作用中開發中,而且通常會發行具備可靠性和效能改善的新發行版本。
用戶端程式庫 | 語言 | GitHub存放庫 | 文件 |
---|---|---|---|
StackExchange.Redis | C#/.NET | 連結 | 詳細資訊如此處所述 |
Lettuce | Java | 連結 | 詳細資訊如此處所述 |
Jedis | Java | 連結 | |
node_redis | Node.js | 連結 | |
Redisson | Java | 連結 | 詳細資訊如此處所述 |
ioredis | Node.js | 連結 | 詳細資訊如此處所述 |
注意
您的應用程式可以使用與開放原始碼 Redis 相容的任何用戶端程式庫來連接到您的 Azure Managed Redis 執行個體。
根據您的叢集原則選擇正確的用戶端程式庫
Azure Managed Redis 支援企業叢集原則和 OSS 叢集原則。 請在此處查看更多資訊 (新增叢集原則資訊的連結)。
所有用戶端程式庫都可以透過企業叢集原則與您的 Redis 執行個體搭配使用。 不過,如果您使用 OSS 叢集原則,請確定您選擇的用戶端連結庫支持連線到叢集 Redis 實例。
封鎖的命令
Microsoft管理 Azure 受控 Redis 實例的組態和管理,預設會停用下列命令。 如需封鎖命令的詳細資訊,請參閱叢集管理命令相容性
多鍵命令
由於 AMR 執行個體使用叢集設定,您可能會在執行多鍵操作的命令時看到 CROSSSLOT
例外狀況。 具體行為會隨著使用的叢集原則而不同。 如果您使用 OSS 叢集原則,多鍵命令會要求所有索引鍵都對應至相同的雜湊位置。
您也可能看到企業叢集原則出現 CROSSSLOT
錯誤。 企業叢集的位置間僅允許使用下列多鍵命令:DEL
、MSET
、MGET
、EXISTS
、UNLINK
和 TOUCH
。
在主動-主動資料庫中,只能對位於相同位置的索引鍵執行多鍵寫入命令 (DEL
、MSET
、UNLINK
)。 不過,在主動-主動資料庫中的位置間允許使用下列多鍵命令:MGET
、EXISTS
和 TOUCH
。 如需詳細資訊,請參閱資料庫叢集。
企業叢集原則封鎖的命令
- CLUSTER INFO
- CLUSTER HELP
- CLUSTER KEYSLOT
- CLUSTER NODES
- CLUSTER SLOTS
作用中異地複寫封鎖的命令
- FLUSHALL
- FLUSHDB
用戶端程式庫特定的指引
如需用戶端程式庫特定指引最佳做法的資訊,請參閱下列連結:
- StackExchange.Redis (.NET)
- Lettuce (JAVA)
- Jedis (JAVA)
- Redisson (Java)
- Node.js
- PHP
- HiRedisCluster
- ASP.NET 工作階段狀態提供者
Redisson (Java)
我們建議您使用 redisson 3.14.1 或更高版本。 舊版包含已知的連線遺漏問題,其會在容錯移轉之後發生問題。 監視 Redisson 變更記錄,以了解其他已知問題可能會影響您應用程式所使用的功能。 如需詳細資訊,請參閱 CHANGELOG
和 Redisson 常見問題集 \(英文\)。
其他注意事項:
- 不同於其他用戶端,Redisson 會預設為「從複本讀取」策略。 若要變更此預設值,請修改 'readMode' 組態設定。
- Redisson 有一個連線集區策略,其中具有可設定的最小值和最大值設定,且預設的最小值很大。 大型預設值可能會導致積極的重新連線行為或「連線風暴」。 若要降低風險,請考慮使用較少的連線,因為您可以透過數個連線有效率地透過管線傳送命令或命令批次。
- 雷迪森有默認閑置連線逾時 10 秒,這會導致比理想更關閉和重新開啟連線。
以下是您可以視需要修改之叢集模式的建議基準設定:
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:10000"
scanInterval: 1000
pingConnectionInterval: 60000
keepAlive: false
tcpNoDelay: true
如需 Rettl 支援 JCache 作為 IBM Liberty on Azure 中 HTTP 會話狀態存放區的文章,請參閱 在 Azure Kubernetes Service (AKS) 叢集上使用 Java EE JCache 與 Open Liberty 或 WebSphere Liberty。
用戶端程式庫的使用方式
除了參考文件之外,您還可以找到介紹如何使用不同語言和快取用戶端開始使用 Azure Managed Redis 的教學課程。
如需在教學課程中運用其中一些用戶端程式庫的詳細資訊,請參閱下列文章:
- 撰寫 .NET Framework 應用程式的程式碼
- 撰寫 .NET Core 應用程式的程式碼
- 撰寫 ASP.NET Web 應用程式的程式碼
- 撰寫 ASP.NET Core Web 應用程式的程式碼
- 撰寫 Java 應用程式的程式碼
- 撰寫 Node.js 應用程式的程式碼
- 撰寫 Python 應用程式的程式碼