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

  

java项目中,针对缓存问题的处理方式【接口中的处理方式】的更多相关文章

  1. Atitit 纯java项目的提升进度大法---通用json dsl接口

    Atitit 纯java项目的提升进度大法---通用json dsl接口 1. Json dsl接口1 1.1. Url:  http://aaa.com/api_jsondsl?dsl={}1 1. ...

  2. 根据从redis缓存的数据查询出来,在从数据库中取出所有的数据,俩个数据进行比较,去掉重复,剩下库中新插入的数据,取出新数据,然后把redis中的缓存数据清空把从数据库中查出来的所有数据放到redis缓存中

    参考代码: public String getNewCenter(HttpServletRequest request,HttpServletResponse resonse){ JSONObject ...

  3. SpringBoot中Shiro缓存使用Redis、Ehcache

    在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...

  4. spring中配置缓存—ehcache

    常用的缓存工具有ehcache.memcache和redis,这里介绍spring中ehcache的配置. 1.在pom添加依赖: <!-- ehcache 相关依赖 --> <de ...

  5. 分布式数据存储 之 Redis(二) —— spring中的缓存抽象

    分布式数据存储 之 Redis(二) -- spring中的缓存抽象 一.spring boot 中的 StringRedisTemplate 1.StringRedisTemplate Demo 第 ...

  6. paip.批处理清理java项目冗余jar的方法

    paip.批处理清理java项目冗余jar的方法 在myeclipse中开发的java项目遇到jar包冗余情况,如何删除项目中的冗余jar包啊?项目很大jar包一百多个. 2010-09-14 14: ...

  7. Java项目转换成Web项目

    阐述:有时候我们在Eclipse中导入一个web项目,发现导入到项目中后变成一个Java项目,这让人很蛋疼.本篇主要讲述怎样将这个本该为web项目的Java项目变身回去,以及一些在导入过程中遇到的一些 ...

  8. django中的缓存 跨域问题(同源策略)

    django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...

  9. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

  10. django中的缓存

    对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大.所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要 对于d ...

随机推荐

  1. python set 集合操作

    转自:https://www.cnblogs.com/alex3714/articles/5740985.html s = set([3,5,9,10]) #创建一个数值集合 t = set(&quo ...

  2. python3-使用模块

    Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python3 # -*- c ...

  3. MYSQL数据导出与导入,secure_file_priv参数设置

    https://www.imooc.com/article/41883 MySQL 报错 [Code: 1290, SQL State: HY000]  The MySQL server is run ...

  4. scrapy处理post请求的传参和日志等级

    一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. - 日志信息的种类: ERROR : 一般错误 ...

  5. hdu 3572 : Task Schedule (网络流)

    题目链接 题意: 有M个机器,N个任务 对第i个任务,需要在[Si,Ei]这段时间内恰有Pi天被process 每天最多有M个机器同时工作 每一天,一个任务若被process,那么它恰占用一个机器. ...

  6. rocketmq特性(features)

    # 特性(features) 1 订阅与发布 消息的发布是指某个生产者向某个topic发送消息:消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息,进而从该topic消费数据. 2 消 ...

  7. Ubuntu操作

    1. 从windows 拷贝文件到Ubuntu: scp  /c/Users/init/Downloads/pycharm-community-2019.3.tar.gz      alice@192 ...

  8. React Native 中不用手点击,代码实现切换底部tabBar

    参考:https://www.jianshu.com/p/02c630ed7725 tabBar1页面有按钮,点击切换到tabBar2 直接用this.props.navigation.navigat ...

  9. 事物Spring boot @Transactional

    事物:dr @Override @UDS(value="fq") @Transactional public BaseResultMessage testTransactional ...

  10. 向上取整&向下取整

    使用floor函数. floor(x)返回的是小于或等于x的最大整数.eg.      floor(1.5) = 1 floor(-2.5) = -3 使用ceil函数. ceil(x)返回的是大于x ...