如何自动删除这些冗余缓存条目?

时间:2013-08-06 22:59:13

标签: ruby-on-rails caching memcached dalli

假设我在Category课程中创建了一个新对象:

> @category = Category.create :name => "foo"
+----+------+-------------------------+-------------------------+
| id | name | created_at              | updated_at              |
+----+------+-------------------------+-------------------------+
| 13 | foo  | 2013-08-06 22:38:51 UTC | 2013-08-06 22:38:51 UTC |
+----+------+-------------------------+-------------------------+
1 row in set

我可以将@category.name的值存储在Rails.cache中,如果它尚未存储在那里:

> Rails.cache.fetch([@category, "name"]) {@category.name}
Cache read: categories/13-20130806223851/name
Cache generate: categories/13-20130806223851/name
Cache write: categories/13-20130806223851/name
=> "foo"

该记录的唯一缓存键为categories/13-20130806223851/name

我可以使用密钥读取该值。

> Rails.cache.read([@category, "name"])
Cache read: categories/13-20130806223851/name
=> "foo"

如果我@category.touch,其cache_key更改,则查找不再检索存储的值。

> @category.touch
=> true

> Rails.cache.read([@category, "name"])
Cache read: categories/13-20130806224755/name
=> nil

这就是我们想要的。但是旧的键值对仍然在缓存中:

> Rails.cache.read("categories/13-20130806223851/name")
Cache read: categories/13-2013080

如果没有刷新整个缓存,我怎样才能确保自动删除旧的键值对?理想情况下,我正在寻找一种能够立即应用于我在缓存中存储的所有内容的解决方案。

BTW我在Rails 3.2和Ruby 1.9.3上。

0 个答案:

没有答案