php - 如何在 Memcache 或 Redis 中通过标签清除缓存?

标签 php caching doctrine-orm redis memcached

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

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

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

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

谢谢。

最佳答案

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

  1. 使用扫描命令:http://redis.io/commands/scan获取与您的模式匹配的键并删除它们。 How to atomically delete keys matching a pattern using Redis
  2. 为 key 设置过期时间。 http://redis.io/commands/expire .所以它在它的时间过期后就会过期(删除)。
  3. 将逐出策略设置为 lru,http://redis.io/topics/lru-cache .这样当新键需要空间时,redis 本身会删除旧键。当且仅当您单独使用 Redis 作为缓存时,这才有效。

关于php - 如何在 Memcache 或 Redis 中通过标签清除缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39819252/

相关文章:

php - 从数据库中检索到的值不正确

javascript - Codeigniter:AJAX调用后返回JSON数据但无法运行success: function()

php - 当 HTML 表单字段之一提交为空白且所有询问列的默认值为 NULL 时,如何更新现有 MySQL 表?

php - Laravel League\Flysystem\Exception : Impossible to create the root directory

php - 允许在页面上缓存,但确保图像不被缓存

当内存在 ubuntu 中仍然可用时发生 Java 内存不足

javascript - 如何从浏览器缓存中删除图像

php - Doctrine 2 删除实体问题

zend-framework - ZF + Doctrine2 phpUnit 错误 : PDOExeption: You cannot serialize or unserialize PDO instances

php - Doctrine 认为它已经创建了一个表,但它并没有