在实际项目开发中,会使用到很多缓存技术,而且数据库的设计一般也会依赖于有缓存的情况下设计。
- 常用的缓存分两种:本地缓存和分布式缓存。
- 常用的本地缓存是guava cache,本文主要介绍guava cache在项目中的使用,首先来了解下为什么使用缓存,以数据库(如MYSQL)、本地缓存(如guava cache)及分布式缓存(如redis)的区别来讲:
一、数据库、本地缓存及分布式缓存的区别
1、存储位置:
- 数据库:任何机器硬盘,开关机时,数据不丢失
- 本地缓存:本机内存,一旦关机,之前的数据丢失
- 分布式缓存(如redis):存在redis所在机器的内存,一旦redis所在机器关机,数据丢失
2、持久化:
- 数据库:可以持久化
- 本地缓存:不可以持久化
- 分布式缓存(如redis):不可以持久化
3、访问速度:
- 数据库:慢
- 本地缓存:最快
- 分布式缓存:快
4、扩展性:
- 数据库:可扩展,可存在其他机器的硬盘
- 本地缓存:不可扩展,只能存在本机内存
- 分布式缓存:可扩展,可存在其他机器的内存
5、使用场景:
- 数据库:需要实现持久化保存
- 本地缓存:需要快速访问,但需要考虑内存大小
- 分布式缓存:1)需要快速访问,不需要考虑内存大小
2)需要实现持久化,但会丢失一些数据
3)需要让缓存集中在一起,访问任一机器上内存中的数据都可以从缓存中得到
二、实例
基于SSMM框架整合步骤,连接(SSMM(spring+springmvc+maven+mybatis)框架整合)的flowershop项目。
1、启动MYSQL
2、创建mvn项目
- 配置pom.xml文件(这里直接给出已经配置好的)
-
View Code
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.wn</groupId> 8 <artifactId>flowershop</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <name>flowershop</name> 11 <packaging>war</packaging> 12 <properties> 13 <java.version>1.8</java.version> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 16 <spring.version>4.2.4.RELEASE</spring.version> 17 <mybatis.version>3.2.8</mybatis.version> 18 <mybatis-spring.version>1.2.2</mybatis-spring.version> 19 <jackson.version>2.6.4</jackson.version> 20 <servlet-api.version>3.1.0</servlet-api.version> 21 </properties> 22 <dependencies> 23 <!-- servlet --> 24 <dependency> 25 <groupId>javax.servlet</groupId> 26 <artifactId>javax.servlet-api</artifactId> 27 <version>${servlet-api.version}</version> 28 <scope>provided</scope> 29 </dependency> 30 <!-- 引入spring --> 31 <dependency> 32 <groupId>org.springframework</groupId> 33 <artifactId>spring-core</artifactId> 34 <version>${spring.version}</version> 35 </dependency> 36 <dependency> 37 <groupId>org.springframework</groupId> 38 <artifactId>spring-beans</artifactId> 39 <version>${spring.version}</version> 40 </dependency> 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-context</artifactId> 44 <version>${spring.version}</version> 45 </dependency> 46 <!-- spring mvc --> 47 <dependency> 48 <groupId>org.springframework</groupId> 49 <artifactId>spring-web</artifactId> 50 <version>${spring.version}</version> 51 </dependency> 52 <dependency> 53 <groupId>org.springframework</groupId> 54 <artifactId>spring-webmvc</artifactId> 55 <version>${spring.version}</version> 56 </dependency> 57 <!-- 数据库相关 --> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-jdbc</artifactId> 61 <version>${spring.version}</version> 62 </dependency> 63 <!-- java连mysql必须的包 --> 64 <dependency> 65 <groupId>mysql</groupId> 66 <artifactId>mysql-connector-java</artifactId> 67 <version>5.1.27</version> 68 <scope>runtime</scope> 69 </dependency> 70 <!-- 数据源 --> 71 <dependency> 72 <groupId>org.apache.tomcat</groupId> 73 <artifactId>tomcat-jdbc</artifactId> 74 <version>7.0.47</version> 75 </dependency> 76 <!-- 引入mybatis --> 77 <dependency> 78 <groupId>org.mybatis</groupId> 79 <artifactId>mybatis</artifactId> 80 <version>${mybatis.version}</version> 81 </dependency> 82 <!-- mybatis与spring进行集成的包 --> 83 <dependency> 84 <groupId>org.mybatis</groupId> 85 <artifactId>mybatis-spring</artifactId> 86 <version>${mybatis-spring.version}</version> 87 </dependency> 88 <!-- json --> 89 <dependency> 90 <groupId>com.fasterxml.jackson.core</groupId> 91 <artifactId>jackson-annotations</artifactId> 92 <version>${jackson.version}</version> 93 </dependency> 94 <dependency> 95 <groupId>com.fasterxml.jackson.core</groupId> 96 <artifactId>jackson-core</artifactId> 97 <version>${jackson.version}</version> 98 </dependency> 99 <dependency> 100 <groupId>com.fasterxml.jackson.core</groupId> 101 <artifactId>jackson-databind</artifactId> 102 <version>${jackson.version}</version> 103 </dependency> 104 <!-- guwa cache --> 105 <dependency> 106 <groupId>com.google.guava</groupId> 107 <artifactId>guava</artifactId> 108 <version>14.0.1</version> 109 </dependency> 110 </dependencies> 111 <build> 112 <plugins> 113 <plugin> 114 <groupId>org.apache.maven.plugins</groupId> 115 <artifactId>maven-compiler-plugin</artifactId> 116 <configuration> 117 <source>1.8</source> 118 <target>1.8</target> 119 <encoding>utf-8</encoding> 120 </configuration> 121 </plugin> 122 </plugins> 123 </build> 124 </project>