【问题标题】:How I can clear cache by tag in Memcache or Redis?如何在 Memcache 或 Redis 中按标签清除缓存?
【发布时间】:2017-02-10 16:03:13
【问题描述】:

今天我在开发项目时遇到了问题。

例如我通过缓存键 = post_list_OFFSET_LIMIT 将一些数据(如博客文章)放入 memcache 中,其中通过分页偏移和限制它的动态数据。

但是当我添加新帖子时,我无法通过前缀 post_list_ 清除缓存。缓存过期后将显示新帖子。

Memcache 没有标记功能。可以通过自定义代码添加标记支持。 redis有这个功能吗?按前缀标记或删除标签?

谢谢。

【问题讨论】:

    标签: php caching doctrine-orm redis memcached


    【解决方案1】:

    在redis中可以通过3种方式解决:

    1. 使用 SCAN 命令:http://redis.io/commands/scan 获取与您的模式匹配的密钥并将其删除。 How to atomically delete keys matching a pattern using Redis
    2. 为密钥设置到期时间。 http://redis.io/commands/expire。因此,它会在它存活一段时间后过期(删除)。
    3. 将驱逐策略设置为 lru,http://redis.io/topics/lru-cache。这样当新键需要空间时,redis 本身会删除旧键。当且仅当您单独使用 redis 作为缓存时,此方法才有效。

    【讨论】:

    • 不。 KEYS 命令在阻塞时会给您带来不好的性能。另一种是 SCAN 命令
    猜你喜欢
    • 2015-04-16
    • 2016-09-10
    • 2014-11-13
    • 2018-06-01
    • 2011-06-14
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多