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