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);//添加缓存信息
}

  

原文地址:https://www.cnblogs.com/FanSunny/p/4875380.html