世上无难事,只要肯放弃
前言
菜鸡来记录一下学习分布式缓存的过程。
说起这个缓存我立马就想到了当初学习计算机组成原理的时候学过的什么寄存器,高速缓冲,内存,磁盘,一级缓存,二级缓存,三级缓存之类的东西。我也了解过,一个程序做数据库的缓存也有一级缓存,二级缓存的概念。那么这是不是跟计算机组成原理学习的缓存很相似呢?根据我浅显的认知就大概提一嘴。
- CPU访问内存比较慢,所以需要高速缓存,让CPU访问高速缓存,而高速缓存与内存进行数据交换。
- 一个程序要访问数据库,其中与数据库建立连接,查询数据这一过程比较耗时间,所以把第一次查询到的数据进行缓存,下一次查询的时候就直接从缓存中拿到数据,不走数据库,这样能加快程序的速度。
在搜索如何做缓存的时候,有一篇文章说Ehcache无法实现分布式缓存,就算手动实现分布式缓存,也无法保证数据的强一致性。而Hazelcast是一个很好的分布式缓存解决方案。既然都这么说了,那必须得用一下这个Hazelcast。虽然我是一个连任何缓存都没有用过的菜鸡,但是,世上无难事,只要肯放弃。
该项目代码存放在码云上:https://gitee.com/siumu/blog_code.git
准备工作
首先呢,是要先准备数据库。建库、建表、建字段、建数据太麻烦,我就偷个懒,用V部落的sql文件直接导入,用它的user表,该数据库也会和该博客的代码一起上传到码云。这张表长这个样子:

接下来就是创建应用了。既然是分布式缓存,那肯定要创建多个应用来测试,所以我就创建一个maven多模块的项目,如何创建一个多模块项目,网上有很多教程,很简单,我就不写一遍了,写起来挺费劲的。如果是第一次创建多模块项目,可能会出现很多问题,慢慢解决就好了,学习就要有耐心。
我创建的项目目录结构如下:
- hazelcast_demo是父工程
- hazelcast-model是子模块,主要是创建实体类
- hazelcast-web是一个web应用,依赖hazelcast-model
- hazelcast-web-copy是对hazelcast-web应用的一个复制
这样就能启动两个web应用了。

hazelcast_demo作为父工程,没有src,就只有一个pom文件,项目需要的依赖在这里定义,它的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<modules>
<module>hazelcast-model</module>
<module>hazelcast-web</module>
<module>hazelcast-web-copy</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xiumu</groupId>
<artifactId>hazelcast_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hazelcast_demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<mysql.version>5.1.47</mysql.version>
<lombok.version>1.18.12</lombok.version>
<springboot.version>2.3.1.RELEASE</springboot.version>
<hazelcast.version>4.0</hazelcast.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${
mysql.version}</version>
</dependency>
<dependency>

本文详细介绍了使用Hazelcast实现分布式缓存的过程,包括项目搭建、配置、测试及跨机器部署。通过实例展示了Hazelcast的易用性和高效性。
最低0.47元/天 解锁文章
2468





