Looker 为每个实例维护一个cache。Looker 的默认缓存是一种基于多个层的自定义缓存解决方案:内存、本地磁盘和远程磁盘。Looker 内部数据库用作索引,用于确定缓存对象在系统中的位置。
如果您托管自己的 Looker 实例,则可以选择将 Looker 配置为使用单独托管的 Redis 缓存。Redis 缓存具有以下优势:
- 改进的缓存检索 - 主要改进在于一致的缓存检索时间。随着 Looker 集群中的节点数量增加,节点间通信可能会降低缓存性能。新的 Redis 缓存架构可整合缓存,因此无论您的 Looker 集群规模如何,缓存检索时间都一致。
- 减少负载 - 此外,缓存位于与 Looker 实例不同的层级,这会减少 Looker 实例的负载。
- 可伸缩性:使用 Redis 缓存还可让缓存独立于 Looker 实例进行扩缩。
使用要求
Looker 支持 Redis 4.0.x 版和 5.0.x 版。如需将 Redis 缓存与 Looker 搭配使用,您的 Redis 实例必须满足以下要求:
- Redis 实例必须可从 Looker 实例访问。
- Redis 实例不得是集群;不过,您可以使用主/副本配置来实现高可用性。
- Redis 缓存的大小应与 Looker 缓存的大小大致相同。默认情况下,Looker 缓存每个节点为 2 GB;因此,如果您有 3 个节点的 Looker 集群,建议使用 6 GB 的 Redis 缓存。
- Redis
maxmemory-policy
配置应设置为volatile-lru
。 - 您需要停用任何 Redis 身份验证。存储在 Redis 中的所有数据都会先在 Looker 实例中加密,然后再发送到 Redis 服务器。
- 您可以使用托管在 AWS ElastiCache 或 Google MemoryStore 上的 Redis 选项,前提是该选项不是 Redis 集群配置。
此外,在 Looker 中使用 Redis 也需要使用 Looker 的 GCM 加密系统。您必须先更新使用旧版加密的实例的加密设置,然后才能启用 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