Java 缓存框架 Imcache

码农软件 · 软件分类 · 缓存系统 · 2019-08-30 10:12:18

软件介绍

Imcache是一个新的Java缓存库包,它支持各种已应用至今高速缓存模型。Imcache打算通过提供管理缓存数据的方法,以加快应用程序。它提供了从小型应用到大规模应用解决方案。

支持堆外off-heap是其特点,这大概是hazelcast和guava没有的,而 Terrcotta BigMemory则是收费的。堆外内存突破JVM的内存限制,而且不受垃圾机制影响。

BigMemory是用来避免GC对堆的开销,从几MB或GB大。 BigMemory通过直接的ByteBuffers使用JVM进程的内存地址空间,不像其他原生Java对象接受GC管束。

堆是内存中动态分配对象居住的地方。如果使用new一个对象,它就被分配在堆内存上。这是相对于Stack,如果你有一个局部变量则它是位于Stack栈内存空间。 

EHCache的 off-heap将你的对象从堆中脱离出来序列化,然后存储在一大块内存中,这就像它存储到磁盘上上一样,但它仍然在RAM中。对象在这种状态下不能直接使用,它们必须首先反序列化。也不受垃圾收集。序列化和反序列化会影响性能。(FST-serialization还是很快)。

使用堆外内存能够降低GC导致的暂停。

应用场景:
1.Session会话缓存,保存不激活的用户session,比如用户没有正常退出,我们也无法确定他会不会短时间内再回来,将其会话存到堆外内存。一旦再次登录,无需访问数据库可再次激活。

2.计算结果的缓存,大量查询的结果等,击中率比较低的都可以迁移到堆外。

maven依赖包:

<dependency>
  <groupId>com.cetsoft</groupId>
  <artifactId>imcache</artifactId>
  <version>0.1.0</version><!--Can be updated for later versions-->
</dependency>

Imcache支持堆内和堆外off-heap 缓存,也将支持分布式缓存。
使用方式:

Cache<String,User> cache = CacheBuilder.heapCache().
cacheLoader(new CacheLoader<String, User>() {
    public User load(String key) {
        return userDAO.get(key);
    }
}).evictionListener(new EvictionListener<String, User>{
    public onEviction(String key, User user){
        userDAO.save(key, user);
    }
}).capacity(10000).build();
//If there is not a user in the heap cache it'll be loaded via userDAO.
User user = cache.get("#unique identifier"); 
User newUser = new User("email", "Richard", "Murray")
//When maximum value for cache size is reached, eviction event occurs.
//In case of eviction, newUser will be saved to db.
cache.put(newUser.getEmail(), newUser);

本文地址:https://codercto.com/soft/d/13485.html

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99

Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码