在开发过程中从本地计算机访问Memorystore的最佳方法是什么?有没有像我可以用来设置隧道的Cloud SQL Proxy?
我已经研究这个 Redis 错误好几天了......
我创建了一个 GCP Memorystore Redis 实例并收到以下内部 IP 端点:
10.xxx.xxx.xxx:6378
Run Code Online (Sandbox Code Playgroud)
我创建了一个小型 GCE 实例,并确保该区域与 Redis 实例匹配:
us-central1-f
Run Code Online (Sandbox Code Playgroud)
但是,当我 ssh 进入 VM、连接到 Redis 并发出 PING 时,我收到以下错误响应
Protocol error, got "\x15" as reply type byte
Run Code Online (Sandbox Code Playgroud)
知道为什么我会收到此错误吗?
我需要从云功能访问谷歌云内存存储,但我知道它还不受支持,所以我尝试解决方法在我的 kubernetes 集群中添加 haproxy 并使其可以使用来自负载均衡器类型的 kubernetes 服务公开访问,并将 tcp 请求转发到内存存储。
它对我很好,我可以从云功能连接到我的 memorystore 实例,但只有我遇到的问题,我需要修复它以在 haproxy 级别或 memorystore 级别保护 memorystore,我尝试向 memorystore 添加密码但我发现 CONFIG 命令被禁用。
这是我的 haproxy 配置:
frontend redis_frontend
bind *:6379
mode tcp
option tcplog
timeout client 1m
default_backend redis_backend
backend redis_backend
mode tcp
option tcplog
option log-health-checks
option redispatch
log global
balance roundrobin
timeout connect 10s
timeout server 1m
server redis_server 10.0.0.12:6379 check
Run Code Online (Sandbox Code Playgroud)
那么有什么建议吗?
haproxy google-cloud-platform kubernetes google-cloud-memorystore
Redis ReJSON 模块是否与 Google Memorystore 兼容?我想将 JSON 存储在 memorystore 中,我可以使用 ReJSON 模块吗?
我在同一地区(欧洲西部 2)有 2 个不同的项目(项目 A 和项目 B)。我在项目 A 中创建了一个 Memorystore 实例。因此,我可以从项目 A 连接到 Memorystore,但我也尝试从项目 B 连接到同一个 Memorystore,但没有成功。
我做错了什么?甚至可以将多个项目连接到同一个基本 Memorystore 吗?
google-app-engine google-cloud-platform google-cloud-networking google-cloud-memorystore
我正在使用 Cloud Run 创建数据提取管道。每次通过 Pub Sub 将文件放入 GCS 存储桶时,我的 Cloud Run api 都会被调用。我需要加载一些元数据,其中包含我正在摄取的数据的文本。此元数据很少更改。我显然不想在每次执行时将其重新加载到内存中。我最好的选择是什么?到目前为止我能够研究的是:
选项1
如果在每个服务请求上重新创建对象的成本很高,您还可以将对象缓存在内存中。将其从请求逻辑转移到全局范围会带来更好的性能。 https://cloud.google.com/run/docs/tips#run_tips_global_scope-java
在此链接给出的示例中,heavyComputation 函数仅在冷启动时调用一次吗?如果我需要在元数据更新时偶尔重新触发此功能怎么办?我还发现以下信息令人不安,因为它似乎说不能保证其他实例会重用该对象。
在 Cloud Run 中,您不能假设服务状态在请求之间保留。但是,Cloud Run 确实会重用各个容器实例来服务持续的流量,因此您可以在全局范围内声明一个变量,以允许在后续调用中重用其值。无法提前知道是否有任何单独的请求能够从这种重用中获益。
选项2
使用 Redis 或云内存存储之类的东西,只要有变化,云功能就会更新。所有云运行 api 的实例都从 Redis 中提取元数据信息。这会比选项 1 的性能更低还是更高吗?这还有其他缺点吗?
如果还有其他更好的方法可以做到这一点,我会很感兴趣。
更新 1:我更多地考虑了这一点,由于每个租户的元数据都会有所不同,并且每次调用云运行代码都会为一个租户摄取一个文件,因此加载所有租户是一个坏主意每次执行时的元数据,即使已缓存。不过,我可能会在每个租户的项目中运行单独的云。
shared-memory data-ingestion google-cloud-memorystore google-cloud-run
我一直在尝试从 App Engine 实例连接到 Redis 实例,但没有成功。我遇到连接超时。
我已经在 app.yaml 中设置了主机和端口:
env_variables:
REDIS_HOST: '10.0.0.3'
REDIS_PORT: '6379'
Run Code Online (Sandbox Code Playgroud)
并尝试按照示例中指定的方式进行连接:
redis_host = os.environ.get('REDIS_HOST', 'localhost')
redis_port = int(os.environ.get('REDIS_PORT', 6379))
redis_client = redis.StrictRedis(host=redis_host, port=redis_port)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,一些文档似乎需要 en vpc 访问连接器,但这些仅在 us-cental1 中可用,并且我在 asia-northeast1 中运行了 App Engine 实例和 Memorystore (Redis)。
有人有幸让这个工作吗?一般来说,谷歌非常擅长记录他们的东西,但这对我来说似乎缺乏,实际上没有关于如何让它工作的明确文档。
google-app-engine redis google-cloud-platform google-cloud-memorystore
我们正在使用 Cloud Memorystore Redis 实例向我们面向互联网的关键任务应用程序添加缓存层。对 Memorystore 实例的调用总数(包括 get、set 和 key expiry 操作)约为每秒 10-15K。CPU 利用率一直在 75-80% 左右,并且预计利用率会更高。
目前,我们在标准服务层下使用 M4 容量层。
https://cloud.google.com/memorystore/docs/redis/pricing
需要澄清以下几点。
我们的应用程序确实是 CPU 密集型的,并且我们看不到任何进一步优化我们的应用程序的方法。期待一些有用的参考。
我已经使用 GCP 中的云 sql 在 docker 中设置了一个 Rails 应用程序。我现在添加 Memorystore Redis 以及 Action Cable 和 Sidekiq。
GCP Memorystore redis不支持客户端命令并导致硬错误:
RedisClient::CommandError: ERR unknown command `CLIENT`, with args beginning with: `SETNAME`, `ActionCable-PID-18`
Run Code Online (Sandbox Code Playgroud)
在 docker compose 中本地运行东西没有任何问题。
Google 详细记录了 GCP 的 Memorystore redis 不支持客户端命令。
就配置而言,已设置无服务器 VPC 并使用以下命令构建映像:
vpc-connector=VPC_id
update-env-vars REDIS_URL=redis://ip:port
Run Code Online (Sandbox Code Playgroud)
启动 docker 映像,它会创建云 sql 数据库并开始播种。
在播种过程中,当使用操作 Cable/sidekiq 创建用户期间发送电子邮件时,会发生错误。
根据 sidekiq git: https: //github.com/sidekiq/sidekiq/issues/3518 有一个已知的解决方法。在我的 redis 初始化程序中我添加了:
Sidekiq.configure_server do |config|
config.redis = { url: ENV["REDIS_URL"], id: nil }
end
Sidekiq.configure_client do |config|
config.redis = …Run Code Online (Sandbox Code Playgroud) ruby-on-rails sidekiq google-cloud-platform actioncable google-cloud-memorystore
我最近在 Google Cloud Platform Memorystore 中创建了一个 redis 实例,并尝试使用 Cloud Shell 连接到它。
telnet 10.0.0.3 6379
Trying 10.0.0.3...
telnet: Unable to connect to remote host: Connection timed out
Run Code Online (Sandbox Code Playgroud)
但我总是遇到连接超时问题。根据文档,它指出同一项目中的计算实例应该能够连接到该实例。有没有人也遇到过同样的问题?是否有任何解决方案可以在本地进行测试?
这可能吗?所有云功能都在运行us-central1,Memorystore正在运行,us-central1-f但内部IP:10.0.0.3
我看过https://cloud.google.com/memorystore/docs/redis/samples等文档,根本没有关于连接云功能的说明.
谢谢.
我找不到任何明确说明 GCP 的 Memorystore 产品 (redis) 静态加密的内容。
本文档指出“默认情况下,所有 Google Cloud Platform 产品中的静态数据均已加密。了解按产品的加密粒度。(链接)”
https://cloud.google.com/security/encryption-at-rest/
然而,当我单击该链接时,它列出了粒度,它列出了许多服务的具体信息,但没有列出 Memorystore。
GCP Memorystore 实例中的数据是否静态加密?
我在 GCP 上创建了一个实例,但无法访问它。这与此类似,但建议的解决方案对我不起作用:Unable to telnet to GCP MemoryStore
我尝试远程登录到它,我在同一个项目和区域中,但显然我需要在同一个网络中,因为它是私有 IP,但是如果你想使用云 shell 进行连接怎么办?另外,在我的本地计算机上运行的应用程序如何访问它?我还添加了防火墙规则以确保允许传入连接。