问题标签 [google-cloud-memorystore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1372 浏览

node.js - gke - redis - 连接超时

我的节点 js 应用程序抛出连接超时以连接 Redis 实例。我曾尝试将 redis 实例作为单独的部署以及内存存储 redis 实例来启动。作为 pod 中的部署,我使用普通节点端口并尝试使用集群 ip 访问此实例。该 ip 在 Config Map 中。

我试图从node js应用程序的pod中ping内存存储的ip以及gke上redis部署的集群ip,但它没有连接。

由于redis实例的部署也得到了内部ip:10.0.231.4

没有任何效果

内存存储:

我也从 cloud shell 尝试在 6379 端口上远程登录到 10.0.48.3。它也失败了。

这是日志:

知道如何使它工作吗?提前致谢。

0 投票
0 回答
556 浏览

python - 用于 Flask 网站的带有 Google Cloud MemoryStore 的 Celery

我们正在使用烧瓶构建一个简单的单页网站,以部署在 GKE 上。在此,我们对 MSSQL 数据库(由另一个应用程序使用)进行查询,我们希望使用 celery 和 Google 云内存存储 redis 实例来运行每天安排一次的查询,然后使用当天网站上查询的结果数据因为我们不想在每次有网站访问者时查询数据库(因为数据在一天内大部分是静态的)。

现在,我对软件开发非常陌生,尤其是 DevOps 不太熟悉。在网上阅读了资源后,我对此知之甚少,我仍然不确定它是如何工作的。

完成 celery 任务后的结果数据是否全天存储在 Google 存储中的 Redis 结果后端(Google 云内存存储)中,并且可以在我的 Python 代码中随时使用 celery 任务变量在用户访问该站点时访问?或者我应该在我的代码中使用另一个对谷歌云数据库的查询来访问存储在谷歌存储中的 Redis 结果后端(GCM)中的数据?或者存储在 Redis Result backend(GCM) 中的数据是否只是临时的,直到任务被标记为完成并且全天都无法访问?我该如何前进?有人可以指出这一点吗?

0 投票
2 回答
829 浏览

spring-mvc - 间歇性 Redis 超时

迁移到 GCP 和 Cloud Memorystore 后,我们遇到了间歇性的 Redis 超时。

我们从 GKE 中运行的 Java Spring 应用程序连接。在迁移到 GCP 之前,我们没有遇到这些问题。

与旧环境的一些主要区别:

  • 我们将 4 个 Redis 实例合并为 2 个
  • 我们运行的是我们自己的 Redis 服务器,而不是托管的(Memorystore)

关键数据:

  • 一个实例平均每秒获得约 5,000 次调用
  • 另一个实例每秒获得约 1,000 次调用

我们正在使用:

我们使用以下代码来实例化连接:

我们已经尝试调整池大小,但没有帮助。

我们全天间歇性地遇到这些异常:

0 投票
3 回答
2738 浏览

google-app-engine - 如何从 Google 的标准应用引擎 (Python 3.7) 连接到 Redis 实例 (memorystore)

我一直在尝试从 App Engine 实例连接到 Redis 实例,但没有任何运气。我得到一个连接超时。

我在 app.yaml 中设置了主机和端口:

并尝试按照示例中的说明进行连接:

但它不起作用,一些文档似乎需要 en vpc 访问连接器,但这些仅在 us-cental1 中可用,并且我在 asia-northeast1 中运行了 App Engine 实例和 Memorystore (Redis)。

有没有人有运气让这个工作?一般来说,谷歌非常擅长记录他们的东西,但这对我来说似乎缺乏,没有关于如何让它工作的明确文档。

0 投票
1 回答
533 浏览

encryption - 静态 GCP Cloud Memorystore 数据加密

我找不到任何明确说明 GCP 的 Memorystore 产品 (redis) 是静态加密的。

该文档指出“默认情况下,所有 Google Cloud Platform 产品中的静态数据都是加密的。阅读按产品分类的加密粒度。(链接)”

https://cloud.google.com/security/encryption-at-rest/

但是,当我单击该链接并列出粒度时,它列出了许多服务的细节,但没有列出 Memorystore。

https://cloud.google.com/security/encryption-at-rest/default-encryption/#granularity_of_encryption_in_each_google_cloud_platform_product

GCP Memorystore 实例中的数据是否静态加密?

0 投票
0 回答
64 浏览

google-cloud-platform - 为什么我们看到 memorystore 从 700 条记录中提取一条记录需要更多时间?

我们正在使用内存存储的基本层实例,并在负载测试期间观察到,与获取 700 条记录(约 168 毫秒)相比,检索一条记录所需的时间相当长(约 266 毫秒)。这有什么原因吗?

0 投票
2 回答
776 浏览

google-app-engine - App Engine Standard、Serverless VPC、Cloud Memorystore 提供大量超时

我们将 App Engine Standard python 3 服务配置为通过无服务器 VPC 服务(根据文档和其他堆栈溢出线程)连接到 Cloud Memorystore。(我在下面包含了 app.yaml 配置)。这一切都运作良好,除非一个实例闲置了一会儿。随着时间的推移,我们看到了大量的:

  • 调用 Memorystore 时出现无法解释的长时间挂起,即使它们最终有效
  • redis.exceptions.ConnectionError: Error 110 connecting to 10.0.0.12:6379. Connection timed out.
  • redis.exceptions.TimeoutError: Timeout reading from socket

这些事情发生到我不得不回到 App Engine Flexible 的地步,那里的服务运行良好,没有任何上述问题。

我的结论是,Serverless VPC 没有处理 redis 客户端一直努力保持与 redis 的连接打开的事实。我尝试了几种超时设置,但没有任何帮助。有没有人成功部署 App Engine Standard、Memorystore 和 Serverless VPC?

用于连接 Memorystore 的代码(使用redis-py):

(我尝试了各种超时设置,但找不到任何帮助)

0 投票
0 回答
625 浏览

caching - 如何在 Google Cloud Platform 的 Memory Store Redis 缓存服务器上设置 TTL

我有一个 SpringBoot 应用程序,它@Cacheable通过 Redis 缓存的方法使用注释。我@EnableCaching在我的主 SpringBootApplication 类中,在我的项目的 application.yml 文件中,我有这些属性:

当我在本地执行此操作时,我可以连接到 redis-cli 并看到该方法成功缓存了运行指定的 Time-To-Live 127.0.0.1:6379> TTL "myKeyName"

我正在尝试将 Google Cloud Platform 上的 App Engine 实例连接到 Memory Store Redis 实例。该实例是使用所有默认值创建的,并为我提供了一个 IP 地址和端口,我将其放入我的服务的 .properties 文件中。

附带说明一下,设置 spring.cache.redis.time-to-live 会更改整个应用程序中所有 redis 缓存键的默认 TTL。这在本地有效。

通过 Postman 对我的 Web 服务进行了几次调用后,我等了几分钟(内存存储有延迟),并看到我的密钥出现在内存存储“数据库中的密钥”位置。然后我再等 5 分钟,看看它们永远不会过期。

然后我导出了 Redis 内存存储数据库并通过 RDB 工具命令运行它,rdb --c protocol export.rdb并得到了一些包含以下内容的时髦输出:

我发现 EXPIREAT 指的是“1573335619”,这是 11 月 9 日的 Unix 时间戳,从现在开始一个月。长话短说,我试图让我的 Redis 内存存储响应我的自定义默认生存时间,但它似乎没有在我的 yaml 文件中注册我的属性。

任何有关如何设置内存存储缓存键的 EXPIRE 属性的帮助将不胜感激。

0 投票
1 回答
949 浏览

laravel - 如何从 GAE Flex 中的 Laravel 应用程序连接到 MemoryStore Redis 服务器

我正在使用 GAE Flex 环境来为 Laravel 应用程序提供服务。我已经设置了所有内容,并且该应用程序正在运行。我还设置了 MemoryStore Redis 服务器并尝试从 GAE Flex Laravel 应用程序连接到服务器,但是当我尝试部署我的应用程序时Predis\Connection\ConnectionException: Connection timed out [tcp://10.70.**.**:6379]出现错误。

我已经设置了 MemoryStore Redis 服务器并获取服务器的 IP 地址并将其放入我的 app.yaml 文件中,如下所示。我的应用程序位于该us-east1区域,MemoryStore Redis 区域也在us-east1.

我还关注了谷歌的官方文档:https ://cloud.google.com/memorystore/docs/redis/connect-redis-instance-flex

这适用于纯 PHP 应用程序,但不适用于 Laravel 应用程序。这不是必需的,但我也创建了一个 VPC 并尝试使用它,但它也不起作用。

我也向 Google Cloud Support 询问过,但他们也无能为力,因为它与 Laravel 相关,他们建议我向 Stackoverflow 社区询问。

我希望连接到 MemoryStore Redis 没有任何错误。但我仍然收到此错误:

0 投票
1 回答
90 浏览

networking - GCP:云功能和内存存储区问题

我在us-central1-b(主)和 us-central1-a(副本)区域中有一个内存库(标准层) 。我正在通过云功能和无服务器 VPC 连接到 memorystore 实例。我只知道我的 CF 在 us-central1 区域运行。有什么方法可以将云功能和内存存储实例保持在同一个区域?

到目前为止,我可以指定我的内存存储实例的主节点所在的位置,但 cloudfunction 没有选项可以让它在我想要的区域中运行。如果我能获得关于 CF 区域的信息,我可以让 memorystore 在与 CF 相同的区域中运行。