- 一、对象缓存
- 1、Cache操作类
- import java.util.Date;
- import com.opensymphony.oscache.base.NeedsRefreshException;
- import com.opensymphony.oscache.general.GeneralCacheAdministrator;
- public class BaseCache extends GeneralCacheAdministrator {
- private int refreshPeriod; //过期时间(单位为秒);
- private String keyPrefix; //关键字前缀字符;
- private static final long serialVersionUID = -4397192926052141162L;
- public BaseCache(String keyPrefix,int refreshPeriod){
- super();
- this.keyPrefix = keyPrefix;
- this.refreshPeriod = refreshPeriod;
- }
- //添加被缓存的对象;
- public void put(String key,Object value){
- this.putInCache(this.keyPrefix+"_"+key,value);
- }
- //删除被缓存的对象;
- public void remove(String key){
- this.flushEntry(this.keyPrefix+"_"+key);
- }
- //删除所有被缓存的对象;
- public void removeAll(Date date){
- this.flushAll(date);
- }
- public void removeAll(){
- this.flushAll();
- }
- //获取被缓存的对象;
- public Object get(String key) throws Exception{
- try{
- returnthis.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);
- } catch (NeedsRefreshException e) {
- this.cancelUpdate(this.keyPrefix+"_"+key);
- throw e;
- }
- }
- }
- 2、Cache管理类
- public class CacheManager {
- private BaseCache newsCache;
- private static CacheManager instance;
- private static Object lock = new Object();
- private CacheManager() {
- //这个根据配置文件来,初始BaseCache而已;
- newsCache = new BaseCache("news",120);
- }
- public static CacheManager getInstance(){
- if (instance == null){
- synchronized( lock ){
- if (instance == null){
- instance = new CacheManager();
- }
- }
- }
- return instance;
- }
- public void putUser(User news) { newsCache.put(news.getId()+"",news); }
- public void removeUser(String newsID) { newsCache.remove(newsID); }
- public User getUser(int newsID) {
- try {
- return (User) newsCache.get(newsID+"");
- } catch (Exception e) {
- System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());
- User news = new User(newsID);
- this.putUser(news);
- return news;
- }
- }
- public void removeAllNews() {
- newsCache.removeAll();
- }
- }
- 3、对象Bean
- public class User {
- private int id;
- private String name;
- private String sex;
- private int age;
- private Date accessTime; public User(int id) {
- super();
- this.id = id;
- this.accessTime = new Date(System.currentTimeMillis());
- }
- public String toString() {
- return "User info is : id=" + id + " accessTime="
- + accessTime.toString();
- }
- public User(String name, String sex, int age) {
- super();
- this.name = name;
- this.sex = sex;
- this.age = age;
- }
- public User() {
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public Date getAccessTime() {
- return accessTime;
- }
- public void setAccessTime(Date accessTime) {
- this.accessTime = accessTime;
- }
- }
- 4、测试类
- public class TestObjectCache {
- public static void main(String[] args) {
- CacheManager cm=CacheManager.getInstance();
- TestObjectCache test=new TestObjectCache();
- test.print(cm);
- }
- public void print(CacheManager cm){
- User user=null;
- for (int i = 0; i < 1000; i++) {
- user=cm.getUser(100);
- System.out.println("<<"+i+">>: "+user);
- if(i==10){
- //删除缓存id的对象
- cm.removeUser(100+"");
- }
- if(i==20){
- //删除所有缓存的对象
- cm.removeAllNews();
- }
- // 睡眠部分
- try {
- Thread.sleep(30000);
- } catch (Exception e) {
- }
- }
- }
- }
oscache 对象缓存
最新推荐文章于 2021-02-19 07:15:51 发布