`
pgliuchen
  • 浏览: 11516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Play框架源码浅析之缓存

阅读更多

Play 框架初探之缓存

 

  Play 提供两种缓存方式:

  1. JVM 内存缓存

  2. 使用Memcached 缓存

      Play CacheImpl 接口( 不知道为什么如此命名) 中提供了safeDeletesafeAddincr,decr 等高级操作接口,但是两种机制内部实现却大有区别。

      方式一基于JVM 内存的缓存方案通过重度封装Ehcache 来做内存缓存,Ehcache 的优点之一是引用非常简单。尽管Cache 是线程安全的,但是是对于setget 操作没有内置的timeout 接口,对于incrdecr 操作需要手动处理并发,总的来说还是需要外层封装代码做不少工作。

 

    // 实现increase需要手动处理并发
    public synchronized long incr(String key, int by) {
        Element e = cache.get(key);
        if (e == null) {
            return -1;
        }
        long newValue = ((Number) e.getValue()).longValue() + by;
        Element newE = new Element(key, newValue);
        newE.setTimeToLive(e.getTimeToLive());
        cache.put(newE);
        return newValue;
    }

 

方式二使用Memcached 作为缓存实现,轻度封装了spyMemcached 来连接Memcached,spyMemcached 的初始化比较繁琐,但是其使用nioconcurrent 包的一些机制,存取速度比同类的客户端要快。最重要的一点是spyMemcached 提供了丰富的操作接口,Play 不需要做额外的并发控制处理。

 

    // 客户端提供了increase接口 
    public long incr(String key, int by) {
        return client.incr(key, by, 0);
    }

    // 异步的safeAdd
    public boolean safeAdd(String key, Object value, int expiration) {
        Future<Boolean> future = client.add(key, expiration, value, tc);
        try {
            return future.get(1, TimeUnit.SECONDS);
        } catch (Exception e) {
            future.cancel(false);
        }
        return false;
    }

        

            总的来说,Play的缓存机制非常简单,选用了存取速度快但是稳定性欠妥的spyMemcached作为Memcached客户端,所以轻量、敏捷是Play所注重的

分享到:
评论

相关推荐

    PlayFramework框架缓存.pdf

    总结起来,Play Framework的缓存功能是构建高性能Web应用的关键组件之一。正确理解和使用缓存API,结合适当的缓存策略,可以极大地优化数据库交互,提升系统响应速度,同时要留意缓存的局限性,如数据一致性问题和...

    play框架学习手册

    Play框架是一款基于Java的全栈Web开发框架,它的设计理念是帮助开发者使用最小的配置和编码来构建高性能、可扩展的Web应用。本手册将详细介绍Play框架的核心概念、安装配置、项目结构、基本使用和高级特性。 **一....

    JAVA PLAY框架入门学习手册

    JAVA PLAY框架入门学习手册 Java PLAY框架是基于Java语言的Web应用程序框架,旨在提高Web应用程序的开发效率和可维护性。下面是Java PLAY框架的入门学习手册,涵盖了框架的主要概念、目录结构、请求生命周期、HTTP...

    Play框架的一个demo

    Play框架是一个开源的Java和Scala应用开发框架,它遵循模型-视图-控制器(MVC)架构模式。Play强调简洁的代码和实时反馈,使得开发过程更为高效。它支持TDD(测试驱动开发),并且与现代Web技术如HTML5、CSS3和...

    Play框架中文文档.pdf

    Play框架中文文档.pdf

    scala PLAY 框架 sbt仓库

    Scala Play框架是一款基于Java和Scala的开源Web应用框架,它以简洁、高效和模块化著称,被广泛用于构建现代的、反应式的Web服务。在Play框架中,sbt(Simple Build Tool)是默认的构建工具,它允许开发者管理项目...

    开源mvc框架源码

    【描述】:“Java开源MVC框架源码”特指使用Java语言实现的此类框架,如Spring MVC、Struts2、Play Framework等。这些框架在设计时融入了多种设计模式,如工厂模式、单例模式、观察者模式等,以提供更高效、灵活的...

    play框架手册完整版本

    Play框架是基于Java和Scala的开源Web应用框架,遵循MVC(Model-View-Controller)设计模式,旨在简化Web开发过程。它强调代码即路由、轻量级、快速开发和可测试性,使得开发者能够更加专注于业务逻辑,而不是底层...

    play框架的简单增删改查

    Play框架是Java领域的一款轻量级、开源的Web应用框架,它基于MVC(Model-View-Controller)架构模式,提供了简洁的API和强大的工具,使得开发者能够快速地构建高效、可测试的Web应用程序。本项目是针对初学者设计的...

    play框架jar包

    Play框架是一款基于Java和Scala的开源Web应用框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提供高效、简洁且快乐的开发体验。这个资源包含了一系列用于搭建Play框架的jar包,这些jar包是开发Play应用程序所...

    play框架 2.1 api

    play框架 2.1 api

    任务管理系统(基于play框架)

    在本项目中,该系统是建立在Play框架之上,这是一个强大的全栈Web应用框架,采用Java和Scala语言,提供了高效开发和快速迭代的能力。Play框架以其模块化结构、异步I/O模型和对RESTful架构的支持而备受青睐。 1. **...

    play 框架使用ajax的例子

    Play框架是基于Java和Scala的开源Web应用框架,遵循MVC(模型-视图-控制器)设计模式。它强调简洁的代码结构和开发效率,同时提供了对AJAX的强大支持,使得开发者可以轻松创建交互式的、响应式的Web应用程序。在本...

    play 框架学习

    Play框架是一种基于Java的轻量级、高性能的Web应用程序开发框架,特别注重开发效率和敏捷开发。它采用了无状态的MVC架构,支持RESTful设计原则,使得HTTP请求可以直接映射到代码,避免了通过Servlet等中间层的复杂性...

    play框架搭建环境步骤

    play框架的搭建步骤,是我自己学习的总结

    play框架+一个helloworld例子

    此资源是整个play框架外加一个helloworld小例子,下载解压到文件夹中可以直接进行play框架开发。

    play-redis:Play框架2缓存插件作为Redis服务器的适配器

    `play-redis` 是一个专门为 Play 框架2设计的缓存插件,它作为一个高效的适配器,使得 Play 应用能够无缝地与 Redis 服务器进行交互,利用 Redis 的高速缓存能力来提升应用性能。在本文中,我们将深入探讨 `play-...

Global site tag (gtag.js) - Google Analytics