指數輪詢是網路應用程式的標準錯誤處理策略,用戶端會定期重試失敗的要求,同時逐漸增加每次要求之間的延遲時間。針對所有傳送給 Memorystore for Redis 用戶端且會回傳 HTTP 5xx 和 429 回應碼錯誤的要求,用戶端皆應使用指數輪詢。
如果您正在進行下列作業,請務必要清楚瞭解指數輪詢的運作方式:
- 建構直接使用 Memorystore for Redis REST API 的用戶端應用程式。 
- 透過用戶端程式庫存取 Memorystore for Redis。 請注意,部分用戶端程式庫 (例如 Node.js 適用的 Memorystore for Redis 用戶端程式庫) 已內建指數輪詢策略。 
如果您使用 Google Cloud 控制台,控制台會代表您向 Memorystore for Redis 傳送要求,並處理所有必要的輪詢。
演算法範例
指數輪詢演算法會以指數方式重試要求,並將每次重試之間的等待時間逐漸增加至最大輪詢時間,範例如下:
- 向 Memorystore for Redis 發出要求。 
- 如果要求失敗,請等待 1 + - random_number_milliseconds秒後再重試要求。
- 如果要求失敗,請等待 2 + - random_number_milliseconds秒後再重試要求。
- 如果要求失敗,請等待 4 + - random_number_milliseconds秒後再重試要求。
- 依此類推,時間上限為 - maximum_backoff。
- 繼續等待和重試,直到重試次數達特定上限,但不再增加每次重試之間的等待時間。 
其中:
- 等待時間為 (((2^ - n)+- random_number_milliseconds),- maximum_backoff),- n會在每次疊代 (要求) 時增加 1。
- random_number_milliseconds是小於或等於 1000 的隨機毫秒數。這種設定有助於避免多個用戶端在特定情況下全部同步進行處理並同時重試,導致同步傳送每一波要求。每次重試要求後,都應重新計算- random_number_milliseconds的值。
- maximum_backoff通常是 32 或 64 秒,適合的值視用途而異。
重試達到 maximum_backoff 時間上限後,還是可以繼續重試,但接下來的重試工作就不需繼續增加輪詢時間。舉例來說,如果用戶端使用的 maximum_backoff 時間上限是 64 秒,達到這個值之後,用戶端就可以維持在每 64 秒重試一次的頻率。到了特定時間點後,用戶端應停止無限重試。
用戶端使用的最大退避時間和最大重試次數,應視用途及網路狀況而定。舉例來說,比起桌面用戶端,同一應用程式的行動用戶端可能需要更多重試次數,且重試等待時間也需拉長。
如果重試次數超過上限後,重試要求仍舊失敗,請使用「取得支援」部分列出的任一方法回報或記錄錯誤。