【问题标题】:Redis(Memorystore) clearing out keysRedis(Memorystore) 清除密钥
【发布时间】:2021-04-01 21:41:20
【问题描述】:

我正在使用 express-sessions 和 Redis(Memorystore) 5.0 来保存会话,并且似乎 Redis 在密钥上的 TTL 用完之前清除了所有密钥(随机而不是间隔)。只留下几个备份条目

从 TTL 来看,该条目应该还有一周的有效期。

我以前从未配置过 Redis 实例,很可能是我错误配置了这个实例,我们将不胜感激。

另外,这是我运行监视器时得到的结果

【问题讨论】:

  • 您是否在 Memorystore 实例上配置了 maxmemory-policy?如果是这样,可能是由于您的实例内存已满,并且必须驱逐某些具有 TTL 的键,以便在达到 TTL 之前为新的写入腾出空间。见cloud.google.com/memorystore/docs/redis/…
  • 如果没有,那么我建议您连接到您的 Memorystore 实例并运行 monitor 命令并尝试找出删除背后的原因。这是一个文档:cloud.google.com/memorystore/docs/redis/…
  • 我应该补充一点,我创建了一个计算引擎实例,用于通过外部 IP 访问 Redis,当我不以这种方式使用它时,这种行为不会持续存在。但我希望能够远程访问 Redis 实例。
  • 我在网上查了这些脚本是什么,我认为它们不应该在那里,因为它似乎是一个恶意脚本。此外,您提到如果您不连接 GCE 实例,则不会发生此问题。您应该检查您的实例,或使用新实例连接到 Memorystore。

标签: google-cloud-platform express-session google-cloud-memorystore


【解决方案1】:

避免通过 Compute Engine 的外部 IP 公开您的 Memorystore 实例。结合以下事实 Memorystore 实例当前需要no authentication,这将导致一个漏洞 将允许任何人在您的实例上读取、编写和执行脚本。在最坏的情况下,它将允许某人使用您的实例挖掘加密货币,从而导致您的项目或帐户不幸被暂停。

有多个在线指南可以远程连接到 Memorystore。我建议按照以下线程通过 SSH 连接:Accessing GCP Memorystore from local machines

作为参考,我将答案粘贴在这里(感谢发布它的人):

"如果你的 Redis 机器的内部 IP 地址为 10.0.0.3,你会这样做:

gcloud compute instances create redis-forwarder --machine-type=f1-micro
gcloud compute ssh redis-forwarder -- -N -L 6379:10.0.0.3:6379

只要保持 ssh 隧道打开,就可以连接到 localhost:6379"

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2011-03-27
    • 2014-09-10
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多