聊起缓存,我们可能口似悬河,各个类型的缓存都能挨个分析,但在net下找到一款合适的Disk
Cache貌似如故有好几难度的。

 

一:背景

  事情是这么的,前段时间的三个品类中,供给在web端绘制一些报表,因为表格的底蕴数据源都是全内部存款和储蓄器式的,所以内部存款和储蓄器相对大家的话是相比较缺乏的,我们也许

凯旋门074网址,世家了解,比方有个别散点图,那体系型的表格数量不菲,为了加快,笔者急需缓存二种多少:

 

澳门凯旋门注册网址,1.
依照基础数据源总结出中间结果,为了下贰次加快,缓存个几十分钟,这几个数据量相对来讲相当大。

2.
将劳动的Response实行30分钟缓存,那些数据量也针锋相投十分大,差比少之又少10-50M的样子。

 

     
刚才也说了,内部存款和储蓄器比较吃紧,即使把那么些数量再放置内部存款和储蓄器里面就比较窘迫,也是事情差别意的,借使把如此大的多少块放在布满式缓存中,流量起来以往带

宽也是三个难题,会更加多的面对超时的危害,所以最佳的章程正是运用本机磁盘缓存,那样就足以在品质和内存中取二个平衡点~~~

本条数据量也针锋相对极大。 

本条数据量也针锋相对极大。二:寻找应用方案

  

         
 平衡点找到了,貌似在.net领域中相当少听闻有磁盘缓存这种概念,既然听大人讲的少,那就在nuget中浪一浪,然后就找到了多个top1的diskcache,如下图:

本条数据量也针锋相对极大。 

澳门凯旋门注册网址 1

 

拉下来一测量试验,卧槽,就的多少个CU奔驰G级D操作,连TTL和TTI的意义都尚未,还要捐啥比特币,O(∩_本条数据量也针锋相对极大。∩)O

澳门凯旋门注册网址 2

 

既是net下未有何好的消除方案,目光只可以投到java上边看看,相当的慢就找到了ehCache,看下官方证实挺牛叉的,参与形式依然和上一篇同样,使用thrift做C#

和Java之间的竞相媒介就能够了。(thrift的求实应用方法,差不离能够倾心一篇)如下图:

澳门凯旋门注册网址 3 

本条数据量也针锋相对极大。三:Ehcache的配置

  1. maven的ehcache地址

          <!-- https://mvnrepository.com/artifact/org.ehcache/ehcache -->
          <dependency>
              <groupId>org.ehcache</groupId>
              <artifactId>ehcache</artifactId>
              <version>3.5.2</version>
         </dependency>
    

 

ehcache的法定网站:http://www.ehcache.org/ ,大家可以大约领悟下,具体运用官方都不怎么samples,在DBEngines上的排行也还是十三分正确的。

澳门凯旋门注册网址 4

 

  1. 行使全代码格局的布署

 

       
 接下来就足以写一段代码测量试验一下,向diskcache中插入10000个字符大小的cache,插入一千次,看看成效怎样,代码如下:

public class App {
    public static void main(String[] args) throws CachePersistenceException {

        LocalPersistenceService persistenceService = new DefaultLocalPersistenceService(
                new DefaultPersistenceConfiguration(new File("C:\\1\\cache")));

        PersistentUserManagedCache<String, String> cache = UserManagedCacheBuilder
                .newUserManagedCacheBuilder(String.class, String.class)
                .with(new UserManagedPersistenceContext<String, String>("persistentCache", persistenceService))
                .withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().disk(10L, MemoryUnit.GB, true))
                .withExpiry(Expirations.timeToLiveExpiration(Duration.of(30, TimeUnit.MINUTES))).build(true);

        StringBuilder sBuilder = new StringBuilder();
        for (int i = 1; i < 10000; i++) {
            sBuilder.append(i);
        }

        long startTime = System.currentTimeMillis(); // 获取开始时间

        for (int i = 1; i < 1000; i++) {
            String key = "username" + i;
            String value = sBuilder.toString();
            cache.put(key, value);
            System.out.println(String.format("%s:当前key=%s插入到缓存中", i, key));
        }

        long endTime = System.currentTimeMillis(); // 获取结束时间

        System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
    }
}

 

澳门凯旋门注册网址 5

澳门凯旋门注册网址 6

 

速度大约是600多皮秒,时间依旧得以承受的,在自个儿的花色中也是比较适合的。

   

         当然也能够行使xml的艺术动态配置ehcache,恐怕选择spring
data来集成这么些ehcache都以能够的,因为根本用java来打帮忙,就不现实深远介绍了,

好了,本篇就说这么多啊,希望对你有支持。

 

相关文章