-
为什么需要缓存
拉高程序的性能关系型数据库:数据与数据之间存在关系(联系)的数据库 mysql/Oracle、sqlserver
非关系型数据库:数据与数据之间是不存在关系的,key-value
1、基于文件存储的数据库:ehcache
2、基于内存存储的数据库:redis、memcache
3、基于文档存储的数据库:mongodb -
什么样的数据需要缓存
很少被修改或根本不改的数据 数据字典业务场景比如:耗时较高的统计分析sql、电话账单查询sql等
-
ehcache是什么
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大注1:本章介绍的是2.X版本,3.x的版本和2.x的版本API差异比较大
缓存原理
package com.zk.nine.test;
import java.util.HashMap;
import java.util.Map;
/**
* 缓存的原理
* @author Administrator
*
*/
public class EhcacheTest1 {
static Map<String, Object> map=new HashMap<>();
public static Object getValue(String key) {
Object value=map.get(key);
if(value==null) {
System.out.println("-----------查询数据库!!!");
map.put(key,"-----------权限相关的数据");
value=map.get(key);
}
return value;
}
/**
* 以权限为例
* 张三、李四都属于学生角色
* 注意:张三、李四看到的菜单都是一样的
*
* 希望:
* 1、张三进来查数据库拿到对应的菜单信息 从数据库拿
* 2、李四进来,既然看到的东西是一样的,查数据库需要耗性能。能拿到跟张三一样的信息
* 并且不访问数据库
* 办法:张三访问的时候,将信息存放到缓存中
* @param args
*/
public static void main(String[] args) {
System.out.println(getValue("menus"));
System.out.println(getValue("menus"));
}
}
打印结果为:
------------查询数据库!!!
------------权限相关的数据
------------权限相关的数据