精华内容
下载资源
问答
  • /// 1 客户端缓存-CDN缓存-反向代理缓存-本地缓存 /// 2 本地缓存原理和手写基础实现 /// 3 缓存更新/过期/多线程测试 /// 4 缓存类库封装和缓存应用总结 /// </summary> /// <param name="args"&...
  • 清除Cache缓存

    千次阅读 2016-01-21 14:58:17
    /// /// 清除所有Cache缓存 /// public static void RemoveAllCache() { try { Cache _cache = HttpRuntime.Cache; IDiction


    /// <summary>
    /// 清除所有Cache缓存
     /// </summary>
    public static void RemoveAllCache()
    {
        try
        {
            Cache _cache = HttpRuntime.Cache;//获取当前运行程序的System.Web.Caching.Cache
            //枚举非泛型字典的元素
            IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();//检索用于循环访问包含在缓存中的键设置及其值的字典枚举数
            while (CacheEnum.MoveNext())
            {
                string _key = CacheEnum.Key.ToString();
                _cache.Remove(_key);
            }
        }
        catch { }
    }
    /// <summary>
    /// 移除缓存的对象
    /// </summary>
    public static object Remove(string key)
    {
    </span>//当前Cache对象
    System.Web.Caching.Cache webCache = System.Web.HttpRuntime.Cache;
    
    
    lock (CacheLocker)
    {
    <span style="white-space:pre">	</span>return webCache.Remove(key);
    }
    
    
    
    /// <summary>
    /// 清除所有缓存
    /// </summary>
    public static void RemoveAll()
    {
    <span style="white-space:pre">	</span>//当前Cache对象           
    <span style="white-space:pre">	</span>var cache = System.Web.HttpRuntime.Cache;
    <span style="white-space:pre">	</span>foreach (DictionaryEntry de in cache)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>string key = de.Key as string;
    <span style="white-space:pre">		</span>cache.Remove(key);
    <span style="white-space:pre">	</span>}
    }
    
    
    /// <summary>
    /// 清除所有与Key相关的缓存
    /// </summary>
    public static void RemoveAllLike(string keypattern)
    {
    <span style="white-space:pre">	</span>//当前Cache对象           
    <span style="white-space:pre">	</span>var cache = System.Web.HttpRuntime.Cache;
    <span style="white-space:pre">	</span>foreach (DictionaryEntry de in cache)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>string key = de.Key as string;
    <span style="white-space:pre">		</span>if(key.Contains(keypattern))
    <span style="white-space:pre">			</span>cache.Remove(key);
    <span style="white-space:pre">	</span>}
    
    
    /// <summary>
    /// Cache插入锁
    /// </summary>
    private static object CacheLocker = new object();
    
    展开全文
  • MemoryCache缓存help类

    千次阅读 2018-11-06 16:17:31
    MemoryCache缓存help类 C#的MemoryCache缓存 我们需要引用 System.Runtime.Caching MemoryCache 的help工具类的代码: using System; using System.Runtime.Caching; namespace Cache.Tool { public class ...

    MemoryCache缓存help类

    C#的MemoryCache缓存

    我们需要引用
    System.Runtime.Caching

    MemoryCache 的help工具类的代码:

    using System;
    using System.Runtime.Caching;
    
    namespace Cache.Tool
    {
        public class CacheHelper
        {
            public ObjectCache cache = MemoryCache.Default;//声明缓存类
    
            /// <summary>
            /// 设置缓存,没有其他重载方法,第一个参数name是我们的缓存的名字,第二个参数是我们需要缓存的对象,第三个是我们的过期时间默认7200秒
            /// </summary>
            /// <param name="name">缓存的名字</param>
            /// <param name="Ovlaue">需要缓存的值</param>
            /// <param name="seconds">过期时间</param>
            public void Set(string name, object Ovlaue, int seconds=7200)
            {
                CacheItemPolicy policy = new CacheItemPolicy();
    
                policy.AbsoluteExpiration = DateTime.Now.AddSeconds(seconds);
    
                cache.Set(name, Ovlaue, policy);
            }
    
            /// <summary>
            /// 获取缓存,传入缓存名字即可
            /// </summary>
            /// <param name="name">缓存的名字</param>
            /// <returns></returns>
            public object Get(string name)
            {
                return cache[name];
            }
    
        }
    }
    
    展开全文
  • Guava——Cache缓存工具

    千次阅读 2019-02-04 01:03:07
    Cache缓存工具的特点2. 构建Cache2.1 数据对象2.2 数据获取层Dao2.3 构建Cache对象2.4 基于weight构建Cache3. 使用Cache3.1 从Cache中获取数据3.2 从Cache中获取数据(指定特定获取方式)3.3 删除某个key的缓存3.4 ...

    1. Cache缓存工具的特点

    • 自动加载对象至缓存
    • 达到最大size上限后,会根据LRU算法移除对象
    • 可通过最近读取或写对象的时长来移除对象
    • key自动使用弱引用包装
    • value自动使用弱引用or软引用包装
    • 对象移除后,会进行提示
    • 提供缓存访问的统计信息

    2. 构建Cache

    2.1 数据对象

    public class MyData {
    
        private String name;
    
        private String info;
    
        public MyData(String name, String info) {
            this.name = name;
            this.info = info;
        }
    
    }
    

    2.2 数据获取层Dao

    public class MyDao {
    
        /**
         * 获取数据需要花费一定时间
         *
         * @return 数据对象
         * @param key
         */
        public MyData getData(String key) {
            try {
                // 模拟获取的时间
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            return new MyData(key, "Hello World!" + key.hashCode());
        }
    
    }
    

    2.3 构建Cache对象(基于size)

    // 数据获取层对象
    MyDao myDao = new MyDao();
    
     // 移除数据的监听接口 lambda
    RemovalListener<String, MyData> removalListener = notification -> System.out.println("remove -> " + notification);
    
     // 缓存加载器,当不存在对应缓存时,调用load()
    CacheLoader<String, MyData> cacheLoader = new CacheLoader<String, MyData>() {
         public MyData load(String key) throws Exception {
             return myDao.getData();
         }
     };
    
     // 构建Cache
    LoadingCache<String, MyData> cache = CacheBuilder.newBuilder()
             .maximumSize(100) // 设置缓存size上限,当达到最大size后,将删除最近最少使用的对象(即LRU算法)
             .expireAfterWrite(10, TimeUnit.MINUTES) // 设置缓存过期时间
             .removalListener(removalListener)
             .build(cacheLoader);
    

    2.4 构建Cache对象(基于weight)

    LoadingCache<String, MyData> cache = CacheBuilder.newBuilder()
            .maximumWeight(10000L) // 当所有对象的weight的和超过此值,就开始使用LRU策略移除对象
            .weigher(new Weigher<String, MyData>() {
                @Override
                public int weigh(String key, MyData value) {
                	// 设置对象占总weight的多少
                	// 例如你可以使用对象的内存大小,从而限制Cache最多占用的内存
                    return key.length() + value.hashCode() % 100;
                }
            })
            .build(cacheLoader);
    

    3. 使用Cache

    3.1 从Cache中获取数据

    MyData myData = cache.get("key");
    System.out.println("myData = " + myData);
    

    3.2 从Cache中获取数据(指定特定获取方式)

    MyData myData = cache.get("key", new Callable<MyData>() {
    	@Override
        public MyData call() throws Exception {
            Thread.sleep(5000); // 模拟获取花费的时间
            return new MyData("key", "Other Method");
        }
    });
    System.out.println("myData = " + myData);
    

    3.3 删除某个key的缓存

    cache.invalidate("key");
    

    3.4 向Cache存入数据

    cache.put("key", new MyData("key", "google"));
    

    4. Cache的特性

    4.1 缓存性能效果

    for (int i = 0; i < 100; i++) {
    try {
          // 前5个值获取比较慢,因为key都是新的,需要重新生成对象
          // 后续的数据,因为Cache中已有,所以很快
          String key = String.valueOf(i % 5);
          MyData myData = cache.get(key);
          System.out.println("myData = " + myData);
      } catch (ExecutionException e) {
          e.printStackTrace();
      }
    }
    

    4.2 缓存上限size

    达到上限size后,会根据LRU策略移除缓存对象,并调用监听接口

    Random random = new Random();
    for (int i = 0; i < 100; i++) {
        try {
            String key = String.valueOf(random.nextInt(15));
            MyData myData = cache.get(key);
            System.out.println("myData = " + myData);
            System.out.println("cache.size() = " + cache.size());
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
    

    4.3 缓存统计信息

    // 构建Cache时,需要添加recordStats()
    LoadingCache<String, MyData> cache = CacheBuilder.newBuilder()
            .maximumSize(10)
            .expireAfterWrite(10, TimeUnit.MINUTES)
            .removalListener(removalListener)
            .recordStats() // 启动统计
            .build(cacheLoader);
     
     Random random = new Random();
     for (int i = 0; i < 100; i++) {
        try {
             String key = String.valueOf(random.nextInt(15));
             MyData myData = cache.get(key);
             System.out.println("myData = " + myData);
         } catch (ExecutionException e) {
             e.printStackTrace();
         }
     }
    // 打印统计信息
     System.out.println("stats = " + cache.stats());
    
    展开全文
  • PHP Cache缓存机制与文件缓存原理

    千次阅读 2017-07-28 17:07:46
    PHP Cache缓存机制与文件缓存原理,使用 PEAR 中的 cache 可以将内容缓存于文件,数据库或者内存中,以文件为例。 没有使用缓存 pear_content_cache1.php        echo "这是内容。<P>";  ...

    PHP Cache缓存机制与文件缓存原理,使用 PEAR 中的 cache 可以将内容缓存于文件,数据库或者内存中,以文件为例。

    没有使用缓存

    pear_content_cache1.php

     

     

    <?php 
         echo "这是内容。<P>"; 
         echo "当前时间是" .  date('M-d-Y H:i:s A',  time()) . "<BR>"; 
    ?>

     

    为其加上缓存

    pear_content_cache2.php

     

    复制代码
    <?php 
         require_once 'Cache/Output.php';
         // 设置缓存目录,必须是可写的 
         $cacheDir = './pear_cache'; 
         $cache =  new Cache_Output('file', array('cache_dir' =>  $cacheDir));
         // 如果nocache变量为空,使用缓存中的内容 
        //如果想获得最新的内容,就要赋值给nocache变量 

        if ( empty( $_REQUEST['nocache'])) 
     { 
       //  建立一个独一的cache标识 
      // 请求+Cookie信息 

       $cache_id =  $cache->generateID( array('url' =>  $_REQUEST,'post' => $_POST,'cookies' =>  $HTTP_COOKIE_VARS)); 
     } 
      else 
     { 
        // 想获得最新的内容,ID为空 
        $cache_id =  null
     }
      // 看cache ID对应的缓存内容是否可用 
      if ( $content =  $cache->start( $cache_id)) 
     { 
       // 缓存已存在,直接输出,并结束脚本 
       echo  $content
       exit(); 
     }
      //  缓存中不存在该内容,生成新内容并写入缓存 
      echo "这是内容。<P>"; 
      echo "当前时间是" .  date('M-d-Y H:i:s A',  time()) . "<BR>";
      //  把内容写入缓存 
      echo  $cache-> end(); 
    ?>
    复制代码

    分别刷新这两个文件,你会发现 pear_content_cache1.php 中的“当前时间是”这一行中的时间是随着刷新而变化的,而 pear_content_cache2.php 中的这一行则不变。

     

    这是由于 pear_content_cache2.php 使用了缓存,将用户请求的内容存入静态文件中。当用户再次请求时,它直接从文件中输出,而不需要用程序动态生成内容。

    对于 pear_content_cache2.php ,如果用户想要读取最新的信息,而不是缓存中成旧的信息。那么可以用http.//… /pear_content_cache2.php?nocache=1 来访问,这将禁用缓存功能,刷新一下看看,你将发现时间会随之变化。

    总结PEAR内容缓存类的使用:

    1、包含 PEAR 包 要注意路径。

    2、包含Output.php中的cache类

     

     

    require_once 'Cache/Output.php';

     

    3、设置缓存目录

     

    $cacheDir = './pear_cache'; 

     

     

    确认这个目录是可写的,Cache数据将会写入这个目录的子目录中。

    4、建立一个输出缓存对象

     

    $cache =  new Cache_Output('file', array('cache_dir' =>  $cacheDir));

     

    第一个参数表示我们使用基于“文件”方式的缓存,第二个参数是一个与缓存目录相关联的数组。

    5、产生一个唯一的cache ID

     

    $cache_id =  $cache->generateID( array('url' =>  $_REQUEST,'post' => $_POST,'cookies' =>  $HTTP_COOKIE_VARS));

     

    这里 $cache 对象的 generateID() 方法通过提供一个信息数组 (URL, HTTP POST data, 和 HTTP cookie) 来独一无二地标识这个请求,与其它请求区分开来。

    6、增加一个逻辑判断语句看是否对应于cacheID的缓存数据是否已经存在,如果存在,获取数据并结束脚本。

     

    if ( $content =  $cache->start( $cache_id)) 

         echo  $content
         exit(); 
    }

     

    7、将产生内容的代码放在以上逻辑语句之后,并结束使用cache对象。

     

    echo  $cache-> end();

     

    函数缓存输出 PEAR cache

    PEAR除了可以对输出的内容进行缓存处理外,还可以将对某个函数的调用结果缓存起来。这是个很有趣的功能,如果你的程序要频繁使用到某个函数,而且调用的结果相同的话,我建议你不妨试试,特别是当这个函数运行起来比较慢的时候。

          下面我们实现对一个执行起来很慢的函数 slowFunction() 的缓冲调用。

     

    复制代码
    <?php 
      require_once 'Cache/Function.php'; 
      $cacheDir = './pear_cache/'; 
      $cache =  new Cache_Function('file', array('cache_dir' =>  $cacheDir)); 
      $arr =  array('东方', '南方','西方'); 
      $cache->call('slowFunction',  $arr); 
      echo '<BR>'; 
      $arr =  array('东方', '南方','西方');
      slowFunction( $arr);
      function slowFunction( $arr =  null
     { 
       echo "执行起来很慢的函数 :( <br>"; 
       echo "当前时间是 " .  date('M-d-Y H:i:s A',  time()) . '<br>'; 
       foreach ( $arr  as  $fruit
      { 
        echo "太阳此时正在  $fruit <br>"; 
      } 
     ) 
    ?>
    复制代码

     

    以下是示例的脚本执行结果:

    执行起来很慢的函数:

    • 当前时间是 Jul-28-2010 17:15:57 PM
    • 太阳此时正在 东方
    • 太阳此时正在 南方
    • 太阳此时正在 西方

    执行起来很慢的函数 :

    • 当前时间是 Jul-28-2010 17:17:55 PM
    • 太阳此时正在 东方
    • 太阳此时正在 南方
    • 太阳此时正在 西方

    代码中,Cache/Function.php 类用来执行函数缓冲功能,$cache变量是一个 Cache_Function 对象,使用基于文件的函数缓存,存入 $cacheDir 目录。要缓存一个函数调用,Cache_Function 对象 $cache 的 call() 方法要像这样使用:

    $cache->call(‘slowFunction’,  $arr);

     

     

    这里,slowFunction() 函数被调用,参数为一个数组 $arr ,这个函数被缓存在 $cacheDir 目录下的一个文件里。任何在此之后的对这个函数的调用,将会由 $cache->call() 返回该函数执行的结果。

     

    $cache->call(‘slowFunction’,  $arr);

     

     

    *Note: Copy from http://www.desteps.com/program/php/260_3.html

    展开全文
  • java中Cache缓存的使用

    千次阅读 2020-07-11 22:13:47
    java中Cache缓存 1.JSR107 缓存的整体架构: 2.SpringBoot的缓存抽象 几个重要概念以及缓存注解 其中想要使用缓存直接,就必须开启**@EnableCaching**注解 开启缓存注解的步骤: 作为Spring框架的核心功能之缓存...
  • LoadingCache缓存使用(LoadingCache)

    千次阅读 2020-10-15 22:20:24
    LoadingCache缓存使用(LoadingCache) 一 、引入依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>24.1-jre</version&...
  • Hutool - Cache 缓存

    千次阅读 2020-10-13 18:56:47
    缓存种类 FIFOCache 先入先出缓存,当缓存满了就把最先进入缓存的元素清除 LFUCache 最少使用率缓存,当缓存满了就移除使用次数最少的N个元素 LRUCache 最近最久未使用缓存,当缓存满了就移除最久未使用的...
  • python函数通过lru_cache缓存加速

    千次阅读 2019-06-11 10:35:53
    通过lru_cache缓存加速 不加缓存 %%time def fib(n): return(1 if n in [1, 2] else fib(n-1)+fib(n-2)) print(fib(35)) 9227465 Wall time: 2.11 s 加lru_cache缓存,递归快的一笔 %%time from functools ...
  • HttpRuntime.Cache缓存数据

    千次阅读 2014-04-18 13:18:16
    C# HttpRuntime.Cache缓存数据
  • Spring cache 缓存介绍

    千次阅读 2016-06-28 16:04:01
    注释驱动的 Spring cache 缓存介绍 介绍 spring 3.1 激动人心的新特性:注释驱动的缓存,本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 spring...
  • Android中aCache缓存机制详解

    千次阅读 2017-11-02 23:31:51
    我们可以通过ACache缓存机制来实现对数据的缓存处理,下面通过一个实例来认识ACache缓存。 思路:我们在activity_main.xml中创建ListView布局,每一个item中放置初始数据,然后在MainActivity中对每一个item添加...
  • laravel cache缓存

    千次阅读 2020-05-25 22:26:13
    laravel为不同的缓存系统提供了统一的api,缓存配置位于文件目录...系统默认是文件缓存缓存的目录位于,storage/framwork/cache/data 使用cache之前要先在控制器文件里引用, (1)设置缓存 语法: put: Cache::
  • 第四篇:SpringBoot中Cache缓存的使用

    万次阅读 多人点赞 2018-09-23 13:31:30
    一、Cache缓存的作用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一。Spring 3开始提供了强大...
  • spring boot guava cache 缓存学习

    千次阅读 2017-09-22 17:59:51
    spring boot guava cache 缓存学习 自定义key 自定义全局key过期时间,缓存个数 针对单个key自定义过期时间,缓存个数 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <...
  • spring boot caffeine cache 缓存学习

    千次阅读 2017-09-22 18:01:53
    spring boot caffeine cache 缓存学习 自定义key 自定义全局key过期时间,缓存个数 针对单个key自定义过期时间,缓存个数 配置 yml配置: 优点:简单 缺点:无法针对每个cache配置不同的参数,比如过期时间、最大个...
  • Spring Boot 中使用cache缓存的方法

    千次阅读 2018-05-10 11:30:06
    下面小编给大家带来了Spring Boot 中使用cache缓存的方法,感兴趣的朋友参考下吧一、什么是缓存 CacheCache 一词最早来自于CPU设计当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;...
  • WP Super Cache和W3 Total Cache缓存插件都致力于让你的wordpress速度更快,响应更及时。哪一款缓存插件更适合优化我们的WP站点呢?我用了两款插件,谈下体会: 缓存插件很有必要 缓存页面后,速度明显提升,...
  • Android 获取cache缓存的目录路径

    千次阅读 2017-08-14 10:28:58
    转发请备注原文地址:... Android开发中,有时需要知道cache缓存的路径。我写了一个静态类,供大家能参考 public class CommonUtil { /** * 获取cache路径 * * @param context
  • MemoryCache缓存

    千次阅读 2018-08-28 20:45:59
    缓存中不存在,则重新从文件(或数据库)中读取配置,存入缓存 /// &lt;/summary&gt; /// &lt;param name="cacheKey"&gt;缓存Key&lt;/param&gt; /// &lt;returns&gt;配置...
  • Laravel Cache 缓存使用

    千次阅读 2019-05-20 19:35:00
     Cache 门面的 get 方法用于从缓存中获取缓存项,如果缓存项不存在,返回 null。如果需要的话你可以传递第二个参数到 get 方法指定缓存项不存在时返回的自定义默认值:  Cache::get('key');   Cache::get('key...
  • Spring Boot + Guava Cache缓存应用实战

    千次阅读 2018-05-07 11:47:59
    Guava Cache缓存应用实战 问题背景 实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号)。 项目中有一个需求是要实时统计一些数据,一个应用下可能有多个相同的账号。由于服务商接口的限制,当批量...
  • Nginx动静分离+proxy_cache缓存

    千次阅读 2016-08-08 20:26:07
    nginx的动静分离和proxy_cache缓存可以同时设置,感觉在集群部署时可能效果更好。一.http模块增加缓存设置 proxy_temp_path /etc/nginx/proxy_temp; proxy_cache_path /etc/nginx/proxy_cache levels=1:2 keys_...
  • django cache缓存数据

    千次阅读 2017-06-27 09:49:48
    转自: 出处 针对数据编码实现: ... cache.set('cache_key',data,60*15)#cache_key为存储在缓存中的唯一值,data为存储的数据,60*15为缓存数据的时间 #获取缓存数据 cache.get('cache_key',None)#cache_key
  • javascript数据缓存策略之本地存储 转自:  http://www.cnblogs.com/xpbb/archive/2012/09/15/2685916.html jquery cache 缓存 转自:http://www.2cto.com/kf/201409/335954.html
  • python cache缓存模块

    千次阅读 2019-06-22 19:40:35
    这种方法下要缓存的函数只能写作类函数,因为需要继承cacheable类。不知是否有什么改进方法? from datetime import datetime def cached(time): def make_cacheable(func): func.should_be_cached = True ...
  • yii cache 缓存

    千次阅读 2012-06-29 10:10:33
    yii cache 缓存   (2012-03-14 11:40:15) 转载▼ 标签:  杂谈 分类: yii 1.数据缓存 常见的缓存操作方法get,set,add,delete,flush默认的缓存文件保存到protected/...
  • jquery cache 缓存

    千次阅读 2014-09-19 17:50:44
    做前端开发的朋友都用过javascript,用过js一定知道js缓存,说缓存其实不恰当,严格意义上这些缓存都是运行在内存中的,当你打开一个页面,该页面中的js就已经加入到了内存中,所以可以看到当打开网页多了浏览器占用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 656,581
精华内容 262,632
关键字:

cache缓存