一个缓存与多个缓存

时间:2012-08-17 15:32:36

标签: caching web-applications playframework-2.0

我正在使用使用EHcache的playframework 2。现在api只有Cache.setCache.get所以我认为有一个很大的缓存。

如果有多个缓存会不会更有效率?例如,一个用于ip地址的缓存,一个用于用户名的缓存等。

你能给我一些优点/缺点吗?

2 个答案:

答案 0 :(得分:2)

Play中Cache对象的目的是拥有通用缓存系统。

您可以通过扩展实际缓存并使用特定前缀来专门化缓存:

class UserCache {

    public static final String PREFIX = "UserCache";

    public static void set(String key, User value) {

        Cache.set(PREFIX + key, value);
    }

    public static User get(String key) {
        return (User)Cache.get(PREFIX + key);

    }


}

答案 1 :(得分:2)

考虑最一般意义上的缓存。通常,允许缓存增长到某个大小限制,然后根据上次访问时从缓存中删除项目。

所以,让我们说你想要缓存苹果和梨,并且你有足够的空间来容纳缓存中的20个项目。如果你把它分成苹果的另一个缓存和梨的另一个缓存,它似乎很好地分割。但是,如果您的客户使用大量苹果但几乎没有梨,那么您最终会快速获得苹果缓存,因此最近使用过的苹果将从苹果缓存中删除,而梨则没有&# 39;长时间使用可以留在梨缓存中因为它不满。

你可以看到,如果你只有一个可以存储苹果或梨的缓存,你可以缓存最近使用过的对象,这样整体效率可能更高。因此,从性能角度来看,通常情况下,您拥有尽可能少的缓存会更好。