java项目中,针对缓存问题的处理方式【接口中的处理方式】

1、在service包中,分别建立了关于缓存的一系列的接口、类等,封装到一个工具包中;

  1. 临时缓存的接口(代码部分):
package com.tools;

import java.util.Date;

public interface CacheTemplet {
    //设置添加永久缓存,(缓存唯一索引,缓存数据)
    public void addCache(Object key,Object value);
    //设置添加缓存,不过需要有一个过期的时间毫秒数限制
    public void addCache(Object key,Object value,Long duration);
    //设置添加缓存,需要有一个date类型的时间限制
    public void addCache(Object key,Object value,Date expire);
    //获取缓存信息,根据key获取缓存信息
    public Object getCache(Object key);
    //删除缓存信息,根据key值进行删除
    public void DelCache(Object key);
}

2、再建立一个关于"缓存的工厂",用于获取缓存的实现,从工厂中获取到缓存对象,然后从缓存对象中对缓存信息进行操作(获取也好,删除也可以);

package com.tools;

//缓存工厂
public class CacheFactory {
    //无参构造器
    private CacheFactory(){    }
    //私有的成员变量
    private CacheTemplet cacheTemplet = null;
    
    //获取JVM缓存(未写完)
   public CacheTemplet GetCache(){....}
//获取缓存
public CacheTemplet GetCache(CacheEnum cacheEnum){...}
//Redis连接池
private RedisPool redisPool;
//接下来就是相应的set方法,没有用到get方法,
public void setRedisPool(RedisPool redisPool){...}
private static CacheFactory cacheFactory = null;
//获取缓存工厂
public static CacheFactory GetCacheFactory() {...}
.
.
.
.
........
}

3、然后在相应的service实现类中,具体的使用方法如下:java代码

  

//获取距离用户最近的饭店
public List<Map<String ,String>> putSale(final String product,final String userTell){
  //首先从实例化缓存临时对象
CacheTemplet cacheTemplet = CacheFactory.GetCacheFactory().GetCache(
                                CacheEnum.Redis);//临时缓存,获取缓存工厂,获取缓存实现  
//在创建缓存实体类对象
List<Map<String,String>> storeInRe  = new   ArrayList<Map<String, String>>() ;
.....
Map<String, String> e = new HashMap<String, String>();
e.put("yxwddh", yxwddh); // 饭店电话
storeInRe.add(e);//添加缓存信息
}