本文提供如何針對 Azure Cache for Redis 進行開發的相關常見問題解答。
如何開始使用 Azure Redis 快取?
有數種方式可讓您開始使用「Azure Redis 快取」。
- 您可以查看我們針對 .NET、ASP.NET、Java、Node.js 和 Python 提供的其中一套教學課程。
- 您可以觀看如何使用 Microsoft Azure Redis 快取來建立高效能應用程式 \(英文\)。
- 您可以參閱用戶端文件,了解符合您專案所用開發語言的範例用戶端。 有許多可與「Azure Redis 快取」搭配使用的 Redis 用戶端。 如需 Redis 用戶端清單,請參閱 https://redis.io/clients。
如果您還沒有 Azure 帳戶,您可以:
- 免費申請 Azure 帳戶。 您將獲得能用來試用 Azure 付費服務的額度。 即使在額度用完後,您仍可保留帳戶並使用免費的 Azure 服務和功能。
- 啟用 Visual Studio 訂閱者權益。 MSDN 訂閱可每月提供信用額度,讓您使用付費型 Azure 服務。
StackExchange.Redis 設定選項的作用為何?
StackExchange.Redis 有許多選項。 本節談論一些常見設定。 如需 StackExchange.Redis 選項的詳細資訊,請參閱 StackExchange.Redis 設定。
ConfigurationOptions | 描述 | 建議 |
---|---|---|
AbortOnConnectFail | 設為 True 時,網路失敗後無法重新連線。 | 設定為 false,並讓 StackExchange.Redis 自動重新連線。 |
ConnectRetry | 初始連線期間的重複連線嘗試次數。 | 如需指引,請參閱下列附註。 |
ConnectTimeout | 連線作業的逾時 (毫秒)。 | 如需指引,請參閱下列附註。 |
用戶端的預設值通常就已足夠。 您可以根據工作負載來微調選項。
重試
- 對於 ConnectRetry 和 ConnectTimeout,一般指引是快速檢錯,然後再試一次。 此指引是根據您的工作負載,以及用戶端發出 Redis 命令到接收回應所需的平均時間。
- 讓 StackExchange.Redis 自動重新連線,而不檢查連線狀態,並自行重新連線。 避免使用 ConnectionMultiplexer.IsConnected 屬性。
- 滾雪球 - 您所遇到的問題可能越是重試,越如雪球般越滾越大,不可能解決。 如果出現滾雪球的情況,請考慮使用指數輪詢重試演算法 (如 Microsoft Patterns & Practices 群組所發佈的重試一般指引所述)。
逾時值
請考慮您的工作負載,並設定相符的值。 如果您要儲存大的值,請將逾時設定為較高的值。
將
AbortOnConnectFail
設為 false,並讓 StackExchange.Redis 為您重新連線。使用單一長時間存留的
ConnectionMultiplexer
執行個體,而不針對每個要求建立新的連線。 如需如何管理連線的範例,請參閱使用 RedisConnection 連線至快取 (部分機器翻譯) 中的RedisConnection
類別。將
ConnectionMultiplexer.ClientName
屬性設定為應用程式執行個體唯一名稱,以進行診斷。針對自訂工作負載,使用多個
ConnectionMultiplexer
執行個體。如果您的應用程式中有不同的負載,則可以遵循此模型。 例如:
- 您可以有一個多工器來處理大型索引鍵。
- 您可以有一個多工器來處理小型索引鍵。
- 您可以設定連線逾時的不同值,以及每個所使用
ConnectionMultiplexer
的重試邏輯。 - 在每個多工器上設定
ClientName
屬性,以協助診斷。
遵循此指導可能能夠紓解每個
ConnectionMultiplexer
的延遲。
我可以使用哪些 Azure Redis 快取用戶端?
Redis 最大的好處是,有許多用戶端支援許多不同的開發語言。 如需最新的用戶端清單,請參閱 Redis 用戶端。 如需涵蓋數個不同語言和用戶端的教學課程,請參閱如何使用 Azure Cache for Redis。
取得主機名稱、連接埠和存取金鑰
若要連線 Azure Cache for Redis 伺服器,快取用戶端需要快取的主機名稱、連接埠和存取金鑰。 某些用戶端可能會使用略有不同的名稱來參考這些項目。 您可以在 Azure 入口網站中取得主機名稱、連接埠和金鑰。
若要取得快取的存取金鑰:
- 在 Azure 入口網站中,移至您的快取。
- 在服務功能表上的 [設定] 底下,選取 [驗證]。
- 在 [驗證] 窗格中,選取 [存取金鑰] 索引標籤。
- 若要複製存取金鑰的值,請選取金鑰欄位中的 [複製] 圖示。
若要取得快取的主機名稱和連接埠:
- 在 Azure 入口網站中,移至您的快取。
- 在服務功能表上,選取 [概觀]。
- 在 [基本資訊] 底下,針對 [主機名稱],選取 [複製] 圖示以複製主機名稱值。 主機名稱值的格式為
<DNS name>.redis.cache.windows.net
。 - 針對 [連接埠],選取 [複製] 圖示以複製連接埠值。
Azure Redis 快取是否有本機模擬器?
Azure Cache for 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 上以原生方式執行,但您也可以使用 Windows 子系統 Linux 版在 Windows 電腦上執行 Redis。 如需詳細資訊,請參閱在 Windows 上安裝 Redis (英文) 如有需要也可以選擇設定 redis.conf (英文) 檔案,如此會更符合線上 Azure Cache for Redis 的預設快取設定 (部分機器翻譯)。
如何執行 Redis 命令?
您可以使用 Redis 命令中列出的任何命令,但不包含 Azure Redis 快取中不支援的 Redis 命令中列出的命令。 您有幾種方式可以執行 Redis 命令。
如果您有標準或進階快取,就可以使用 Redis 主控台來執行 Redis 命令。 Redis 主控台提供安全的方式在 Azure 入口網站中執行 Redis 命令。
您也可以使用 Redis 命令列工具。 若要使用,請參閱使用 Redis 命令列工具搭配 Azure Cache for Redis (部分機器翻譯)
Azure Cache for Redis 為什麼沒有 MSDN 類別庫參考?
Microsoft Azure Cache for Redis 是以熱門的開放原始碼記憶體內部資料存放區 Redis 為基礎。 您可以為許多程式語言使用各式各樣的 Redis 用戶端 (英文)。 每個用戶端都有自己的 API,可使用 Redis 命令對「Azure Redis 快取」執行個體發出呼叫。
因為每個用戶端都不同,所以在 MSDN 上找不到單個集中式的類別參考。 每個用戶端都會維護自己的參考文件。 除了參考文件以外,還有許多教學課程會示範如何以不同的語言和快取用戶端開始使用 Azure Cache for Redis。 若要存取這些教學課程,請參閱如何使用 Azure Cache for Redis 以及目錄中的同層級文章。
是否可以使用 Azure Redis 快取作為 PHP 工作階段快取?
是,若要使用「Azure Redis 快取」作為 PHP 工作階段快取,請在 session.save_path
中指定「Azure Redis 快取」執行個體的連接字串。
重要
使用「Azure Redis 快取」作為 PHP 工作階段快取時,您必須將用來連線到快取的安全性金鑰進行 URL 編碼,如以下範例所示:
session.save_path = "tcp://mycache.redis.cache.windows.net:6379?auth=<url encoded primary or secondary key here>";
如果金鑰未進行 URL 編碼,您可能會收到類似此訊息的例外狀況:Failed to parse session.save_path
如需有關搭配 PhpRedis 用戶端使用「Azure Redis 快取」作為 PHP 工作階段快取的詳細資訊,請參閱 PHP 工作階段處理常式 \(英文\)。
什麼是 Redis 資料庫?
Redis 資料庫就是相同 Redis 執行個體內的資料邏輯分隔。 所有資料庫之間會共用快取記憶體,給定資料庫的實際記憶體耗用量取決於該資料庫中儲存的索引鍵/值。 例如,假設 C6 快取有 53 GB 的記憶體,而 P5 有 120 GB。 您可以選擇將 53 GB / 120 GB 全部放入一個資料庫,或分割給多個資料庫。
注意
使用已啟用叢集功能的「進階 Azure Redis 快取」時,只有資料庫 0 可供使用。 這項限制是固有的 Redis 限制,並非特別針對「Azure Cache for Redis」。