在实际项目开发中,会使用到很多缓存技术,而且数据库的设计一般也会依赖于有缓存的情况下设计。

  • 常用的缓存分两种:本地缓存和分布式缓存。
  • 常用的本地缓存是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文件(这里直接给出已经配置好的)
  •   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>
    View Code

相关文章: