实现的功能:
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. 支持缓存数据分区规则的...
简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...
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通信...