【问题标题】:Does a Memcached client hold unused keys in memory?Memcached 客户端是否在内存中保存未使用的键?
【发布时间】:2021-03-10 03:24:52
【问题描述】:

我有多个需要 Memcached 的服务(例如“图书服务”、“客户服务”)。我有两个选择:

  1. 设置一个 AWS Elasticache 集群并共享它,使用键“book-service-key1”、“customer-service-key1”等的前缀方案。
  2. 为每个服务设置一个集群。

如果所有服务使用同一个集群(选项 1),“预订服务”是否会将“客户服务”使用的所有 Memcached 数据保存在内存中,即使它从未使用过这些键中的任何一个?

换句话说,我的问题是:如果我启动一个 memcached 客户端并将其加入集群,它会复制并保存所有数据,还是仅保存它访问的数据?

【问题讨论】:

  • 我没有得到你最后问的问题..你能否提供更多细节
  • @pratikvasa 我现在试图澄清它。
  • 通常客户端从不保存任何数据。它只是保存数据的服务器。我们有一个运行着 6 个 memcache 服务器的集群和大约 20 个使用所有这些服务器的微服务。如果您可以正确定义没有冲突的键,那么我认为应该没有问题。
  • 啊,谢谢。我一定误解了 memcached 的基本工作原理。

标签: memcached amazon-elasticache spymemcached xmemcached


【解决方案1】:

Memcache 客户端不会保存任何数据,因此不应该存在一个服务保存来自另一个服务的数据的问题。

同时为每个服务创建多个集群会增加维护多个集群的开销。此外,在您需要保留缓冲区以存储额外对象的情况下,利用率也会非常低。

如果您可以在避免冲突的情况下正确管理密钥命名,那么拥有至少 2-3 台机器的单个集群会很棒。

要考虑的另一件事是使用较小的实例,而不是 2 或 3 个大型实例。这样一个内存缓存实例的故障可以很容易地被数据库吸收。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多