实现的功能:
1. 将对象按唯一的标识ID存入缓存池(池内部用hashMap 实现);
2. 通过唯一标示ID高速读取池中的对象,如果对象已经失效,返回空;
3. 自动计算对象的存取时间,使用频率,使用次数,缓存命中次数和访问次数;
4. 对于使用频率低,使用次数少,空闲时间长的对象,自动从缓存池中删除;
5. 参数可配置,监视器自己实现,不依赖其他包,功能简单;
把源码包发上来,抛砖引玉哈,希望大家多多批评!
下面的代码是初始化和使用方法!
ObjectCachePool<String, Object> dataCache = new ObjectCachePool<String, Object>(
CacheConfig.getIntProperty("cache", "maxSize"),
CacheConfig.getIntProperty("cache", "minSize")
);
//是否自动清理
dataCache.setAutoClean(CommonUtils.parseBoolean(CacheConfig.getGameProperty("cache", "isAutoClean"),true));
//状态报告间隔
dataCache.setStateTimes(CacheConfig.getIntProperty("cache", "stateTimes"));
//清理工作临界值
dataCache.setCriticalSize(CacheConfig.getIntProperty("cache", "criticalSize"));
//最大清除数量
dataCache.setMaxCleanSize(CacheConfig.getIntProperty("cache", "maxCleanSize"));
//最大允许空闲时间 大于此值,将被列入清除范围
dataCache.setMaxFreeTime(CacheConfig.getIntProperty("cache", "maxFreeTime"));
//最小允许访问率 小于此值,将被列入清除范围
dataCache.setMinAccFrq(CacheConfig.getDoubleProperty("cache", "minAccFrq"));
//最小允许访问次数 小于此值,将被列入清除范围
dataCache.setMinAccNum(CacheConfig.getIntProperty("cache", "minAccNum"));
//设置缓存监视器
dataCache.setMonitor(new CacheMonitor());
dataCache.startMonitor();
一些参数的意义如下:
stateTimes 状态信息输出间隔时间
isAutoClean 是否自动清理
maxSize 最大允许容量
minSize 最小容量
criticalSize 清理临界点,缓存达到此值后清理工作开始执行
maxCleanSize 每次清理数量 每次清理工作从缓存中清除出局的数量达到此值后清理工作停止
maxFreeTime 最大空闲时间,大于此空闲时间的对象将被列入被清理的范围 秒
minAccFrq 对象的最小访问平率,小于此值的对象将被列入被清理的范围 次/小时
minAccNum 对象允许的最小访问次数,小于此值的对象将被列入被清理范围 次
分享到:
相关推荐
以下是一个简单的Jedis连接池配置示例: ```java import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolExample { private static final String REDIS_...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
Ruby是一种动态、面向对象的编程语言,而Ohm是针对Ruby设计的一个ORM(对象关系映射)/ODM(对象数据映射)框架,专门用于与Redis这种内存数据存储进行交互。Ohm允许开发者以简洁的Ruby代码操作Redis的数据结构,...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...
将密钥和算法放在一个独立的服务器上,对外提供加密和解密服务 密钥放在独立服务器中,算法放在应用程序中。 信息过滤与反垃圾 文本匹配_敏感词过滤 正则表达式 trie树 双数组trie树 多级Hash...
MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易于管理的特点在Web开发领域中占据了重要地位。JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者将Java代码嵌入到...
《Memcached源码剖析笔记》是一份深入解析Memcached内部工作原理和技术细节的文档,旨在帮助读者理解这个高性能分布式内存对象缓存系统的设计与实现。Memcached被广泛应用于动态Web应用程序,通过缓存数据和对象,...
72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73、线程的基本概念、线程的基本状态以及状态之间的关系 18 74、sleep() 和 wait() 有什么区别? 18 75、socket通信...
在IT领域,开发一个基于`jsp+mysql`的网上成绩录入系统是一种常见的实践,它主要用于教育机构或企业的内部管理,便于教师或管理员高效地录入、管理和查询学生的成绩。Java Server Pages(JSP)是Java平台上的动态...