Looker 會在每個例項中維護快取。Looker 的預設快取是一種自訂快取解決方案,可在多個層級 (記憶體內、本機磁碟和遠端磁碟) 中運作。Looker 內部資料庫會做為索引,用於識別快取物件在系統中的位置。
如果您要代管自己的 Looker 執行個體,可以選擇設定 Looker 使用單獨代管的 Redis 快取。Redis 快取有下列優點:
- 改善快取擷取功能:主要改善項目是一致的快取擷取時間。隨著 Looker 叢集中的節點數量增加,節點間的通訊可能會降低快取效能。新的 Redis 快取架構可整合快取,無論 Looker 叢集的大小為何,都能提供一致的快取擷取時間。
- 負載較低:此外,快取與 Looker 執行個體位於不同的層級,因此可減少 Looker 執行個體的負載。
- 可擴充性:使用 Redis 快取時,快取可以獨立於 Looker 執行個體進行擴充。
需求條件
Looker 支援 Redis 4.0.x 和 5.0.x 版。如要搭配 Looker 使用 Redis 快取,您的 Redis 執行個體必須符合下列規定:
- Looker 執行個體必須可存取 Redis 執行個體。
- Redis 執行個體不必是叢集,但您可以使用主要/備用設定來維持高可用性。
- Redis 快取的大小應大致等於 Looker 快取的大小。根據預設,Looker 快取的大小為每個節點 2 GB;因此,如果您有三個節點的 Looker 叢集,建議使用 6 GB 的 Redis 快取。
- Redis
maxmemory-policy
設定應設為volatile-lru
。 - 您必須停用所有 Redis 驗證。所有儲存在 Redis 中的資料都會在 Looker 例項中加密,再傳送至 Redis 伺服器。
- 您可以使用代管在 AWS ElastiCache 或 Google MemoryStore 上的 Redis 選項,但不得使用 Redis 叢集設定。
此外,您必須使用 Looker 的 GCM 加密系統,才能在 Looker 中使用 Redis。您必須先為使用舊版加密機制的執行個體更新加密機制,再啟用 Redis。如果您嘗試在未啟用 GCM 加密功能的情況下啟用 Redis,Looker 將無法啟動,並顯示類似以下的錯誤訊息:
2020-01-23 10:28:44.253 -0800 [ERROR|007e4|cache] :: Must enable GCM encryption to use Redis caching
如需從舊版加密方式升級至 GCM 加密方式的操作說明,請參閱「遷移至 AES-256 GCM 加密方式」說明文件。
設定環境變數以啟用 Redis 快取
如要啟用 Redis 快取,您必須將 LOOKER_REDIS_CACHE_DISCOVERY
環境變數設為指向 Redis 連線網址,然後重新啟動 Looker 執行個體,包括叢集中的所有節點。建議您完全關閉伺服器,視需要修改環境和啟動指令碼,加入環境變數,然後啟動所有節點。
如要關閉 Looker,請在每個節點上執行下列指令:
cd looker
./looker stop
舉例來說,如果您在同一個主機上使用預設通訊埠的本機 Redis 例項,請按照下列方式設定 LOOKER_REDIS_CACHE_DISCOVERY
環境變數:
export LOOKER_REDIS_CACHE_DISCOVERY=redis://localhost:6379
然後重新啟動 Looker:
./looker start
確認是否已啟用 Redis 快取
如要判斷是否已啟用 Redis 快取,請在 Looker 記錄中尋找項目。記錄項目應類似下列內容:
2021-06-11 16:54:41.532 +0000 [INFO|007e4|RedissonClientPool] :: Creating client for redis://localhost:6379/
...
2021-06-11 16:54:42.802 +0000 [INFO|007e4|cache] :: Creating render_cache DataShelf: redis