代码之家  ›  专栏  ›  技术社区  ›  Kekoa

memcache是否根据模式使条目无效?

  •  17
  • Kekoa  · 技术社区  · 15 年前

    有没有一种方法可以根据通配符使memcache中的条目无效?

    因此,如果我有以下memcache密钥:

    data/1
    data/2
    data/3
    

    有什么方法可以使那些钥匙失效,比如 data/* ?一下子清除一堆陈旧的数据将非常有帮助。

    2 回复  |  直到 9 年前
        1
  •  23
  •   Niyojan    9 年前

    最好的方法是在创建memcache密钥时提供版本控制密钥。我们通过提供在系统上创建密钥的单个函数/方法来实现这一点。

    $var1 = 123;
    $var2 = 456;
    $cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
    

    makeKey() 使用cachekeyversions数组中的信息并返回:

    5:monkeyInfo:123:456
    

    注意开头的“5”。它来自硬编码的keynames=>版本数组。因此,如果我们想使系统中的每个“monkeyifo”缓存值无效,我们只需将数组中的该值更改为6。从那时起,同一个电话将寻找

    6:monkeyInfo:123:456
    

    下面是键版本数组的示例。’ Mag键() '调用只需查找此数组以获取任何给定键的版本号。

    $cacheKeyVersions = array(
        'monkeyInfo'   => 5,
        'zebraInfo'    => 2
    );
    

    您可以做各种事情使实现符合您的需求,但这是它的基本要点。

        2
  •  5
  •   mmmmmm    13 年前

    memcached不支持命名空间删除。

    这个 official wiki 有关于如何解决问题的建议: