Fork me on GitHub

Using the cache

Introduction

Ninja支持Memcached( http://www.danga.com/memcached/ )作为主要缓存层. 在独立模式下,Ninja使用EhCache( http://ehcache.org/ )作为默认实现.

在多台机器上的生产中,始终使用Memcached. 在单台计算机上,并且在开发应用程序时,可以使用EhCache. 如果您在具有多台计算机的群集上运行EhCache,则计算机的状态将与Ninja的工作方式不兼容.

使用缓存是提高应用程序性能的最佳方法之一. 但请始终记住,缓存可能会在任何时间点失败. 相应地设计您的应用程序!

Using NinjaCache

使用Ninja的缓存工具非常简单. 您将NinjaCache注入到要使用缓存的类中,就可以开始使用了.

@Inject 
NinjaCache ninjaCache;

public Result allPosts() {

    List<Post> posts = ninjaCache.get("posts", List.class);
    if(posts == null) {
        posts = postDao.findAll();
        ninjaCache.set("posts", posts, "30mn");
    }

    return Results.html().render(posts);

}

NinjaCache提供了多种方法来存储,检索和处理缓存中的数据.

一些方法具有重复的"安全"方法(例如, ninjaCache.safeDelete(…)ninjaCache.delete(…) ). 区别在于,以"安全"为前缀的方法将发出阻塞调用,以等待该调用成功,而未加前缀的方法将发出即发即忘的调用,不能保证该调用成功. 您应该首选非安全方法,因为它们不会阻止您的应用程序.

持续时间可以选择以天(" 2d"),小时(" 2h"),分钟(" 2mn")或秒(" 2s")设置. 默认为30天.

Configuring Memcached

要使用Memcached,必须将以下配置变量添加到application.conf文件中:

cache.implementation=ninja.cache.CacheMemcachedImpl

memcached.host=127.0.0.1:11211

// user and password are optional
memcached.user=USER          
memcached.password=PASSWORD        

当您使用多个Memcached实例时,可以通过以下方式指定它们:

memcached.host=127.0.0.1:11211 127.0.0.1:11212 127.0.0.1:11213

像往常一样,在开发和测试时,您可以在生产和EhCache中为变量添加前缀以使用Memcached:

%prod.cache.implementation=ninja.cache.CacheMemcachedImpl

by  ICOPY.SITE