缓存容器

  

 1  function createCache(){
 2             //cache对象中以键值对的形式存储我们的缓存数据
 3             var cache = {};
 4             //index数组中该存储键,这个键是有顺序,可以方便我们做超出容量的处理
 5             var index = [];
 6             return function (key, value) {
 7                 //如果传了值,就说名是设置值
 8                 if(value !== undefined){
 9                     //将数据存入cache对象,做缓存
10                     cache[key] = value;
11                     //将键存入index数组中,以和cache中的数据进行对应
12                     index.push(key);
13
14                     //判断缓存中的数据数量是不是超出了限制
15                     if(index.length >= 50){
16                         //如果超出了限制
17                         //删除掉最早存储缓存的数据
18                         //最早存入缓存的数据的键是在index数组的第一位
19                         //使用数组的shift方法可以获取并删除掉数组的第一个元素
20                         var tempKey = index.shift();
21                         //获取到最早加入缓存的这个数据的键,可以使用它将数据从缓存各种删除
22                         delete cache[tempKey];
23                     }
24                 }
25                 //如果没有传值,只穿了键,那就是获取值
26 //                else{
27 //                    return cache[key];
28 //                }
29                 return cache[key];
30             }
31         }

jQuery的缓存容器

 1  function createCache() {
 2             var keys = [];
 3             function cache( key, value ) {
 4                 // 使用(key + " ") 是为了避免和原生(本地)的原型中的属性冲突
 5                 if ( keys.push( key + " " ) > 3 ) {
 6                     // 只保留最新存入的数据
 7                     delete cache[ keys.shift() ];
 8                 }
 9                 // 1 给 cache 赋值
10                 // 2 把值返回
11                 return (cache[ key + " " ] = value);
12             }
13             return cache;
14         }
时间: 2024-12-06 05:51:01

缓存容器的相关文章

支持高并发高性能 通用缓存容器 浓缩的精华 代码优化版

————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 1 public static class CustomCache 2 { 3 private static List<ConcurrentDictionary<string, DataModel>> cacheContainer = null;//缓存容器

缓存淘汰算法之LRU实现

Java中最简单的LRU算法实现,就是利用 LinkedHashMap,覆写其中的removeEldestEntry(Map.Entry)方法即可 如果你去看LinkedHashMap的源码可知,LRU算法是通过双向链表来实现,当某个位置被命中,通过调整链表的指向将该位置调整到头位置,新加入的内容直接放在链表头, 如此一来,最近被命中的内容就向链表头移动,需要替换时,链表最后的位置就是最近最少使用的位置. import java.util.ArrayList; import java.util.

springboot redis 缓存对象

只要加入spring-boot-starter-data-redis , springboot 会自动识别并使用redis作为缓存容器,使用方式如下 gradle加入依赖 compile("org.springframework.boot:spring-boot-starter-data-redis:${springBootVersion}") redis configuration 中启用缓存 @Configuration @EnableCaching public class Re

缓存淘汰算法--LRU算法

1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高". 1.2. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部: 2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部: 3. 当链表满的时候,将链表尾部的数据丢弃. 1.3. 分析 [命中率] 当存在热点数据时,LRU的效率很好,但偶发性的

缓存设计随想

系统中都用到过cache,但想要把cache模块做到完善却不是这么容易的.我想到的地方 高并发下的设计  (http://www.cnblogs.com/mushroom/p/4199701.html ) 缓存容器的扩展(HTTP缓存,本机缓存,分布式缓存),可以方便的切换共存.(http://www.cnblogs.com/shanyou/archive/2010/07/01/1769547.html) 支持多种缓存过期(如绝对时间,相对时间,文件依赖,缓存互相依赖等等)(http://www

ASP.NET 缓存技术分析

缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓 存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供应用程序的性能.毕竟现在内存非常便宜,用空间换取时间效率应该是非常划算的.尤 其是对耗时比较长的.需要建立网络链接的数据库查询操作等. 对于web页面的缓存,WebForm与ASP.NET MVC有不同的语法.在WebForm中, <%@ OutputCache Duration="6

借鉴dubbo实现自定义缓存

自定义缓存一般基于ConcurrentMap实现,实现缓存需要注意的点是缓存容器对象 本身依赖于 static final去存储对象,样例: ConcurrentMap<String, GenericServiceCache> cacheHolder = new ConcurrentHashMap<String, GenericServiceCache>();.虚拟机会在内存加载时 有特殊的初始化,如果通过类似单例方式创建对象会导致需要同步,而同步在高并发下导致性能变差, 更好的缓

LRU缓存介绍与实现 (Java)

引子: 我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系 了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的.但是,我们大脑能够记住的东西是一定的,我们只能记住自己 最熟悉的,而长时间不熟悉的自然就忘记了. 其实,计算机也用到了同样的一个概念,我们用缓存来存放以前读取的数据,而不是直接丢掉,这样,再次读取的时候,可以直接在缓存里面取,而不用再重 新查找一遍,这样系统的反

POCO库——Foundation组件之缓存Cache

缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效,此外提供key获取键.isValid是否键有效,invalidate使得键值无效:默认情况下键为有效: KeyValueArgs.h :KeyValueArgs键值参数对类,模板参数实现,_key:键,_value:键值:此外提供key获取键,value获取键值: EventArgs.h :事件参数