一.什么样的数据需要缓存
1、很少被修改的数据
2、不是很重要的数据,允许出现偶尔并发的数据
3、不会被并发访问的数据
4、参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改
二.数据字典是什么
一个项目中所有的基础数据,就是项目中所有的下拉框
解决的问题:如果有一百个下拉框,那么就要建一百个表,数据缓存省略了大量表的创建
表设计:
数据源表:数据源标识,数据源描述
数据项表:数据源标识,数据项键,数据值键
三.关系型数据库和非关系型数据库
关系型数据库:数据与数据之间存在关系(联系)的数据库 mysql/Oracle、sqlserver
非关系型数据库:数据与数据之间是不存在关系的,如:key-value
有以下三种:1、基于文件存储的数据库:ehcache
2、基于内存存储的数据库:redis、memcache
3、基于文档存储的数据库:mongodb
四.map集合实现缓存原理
注:在缓存中查找不到指定数据时,访问数据库获取数据,再将数据存放在缓存中。
package com.pjl.text;
import java.util.HashMap;
import java.util.Map;
/**
* 利用map集合简易实现缓存原理
* @author Administrator
*
*/
public class EhcacheDemo1 {
static Map<String, Object> cache = new HashMap<String, Object>();
static Object getValue(String key) {
Object value = cache.get(key);
if(value == null) {
System.out.println("hello zs");
cache.put(key, new String[] {"zs"});
return cache.get(key);
}
return value;
}
public static void main(String[] args) {
System.out.println(getValue("sname"));
System.out.println(getValue("sname"));
}
}
展示效果:
五.ehcache的使用
第一步:导入依赖
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.0</version>
</dependency>