一. 分布式缓存代码实现步骤
1. 创建web项目
我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。
2. 添加依赖包
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-spring</artifactId>
</dependency>
3. 创建application.yml配置文件
创建application.yml配置文件,可以在这里设置服务器端口号。
server:
port: 8081
4. 添加Hazelcast配置类
package com.yyg.boot.config;
import com.hazelcast.config.*;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.core.ITopic;
import com.yyg.boot.interceptor.IMapInterceptor;
import com.yyg.boot.interceptor.MapListener;
import com.yyg.boot.interceptor.TopicListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author 一一哥Sun
* @Date Created in 2020/4/23
* @Description Description
*/
@Configuration
public class HazelcastConfiguration {
@Bean
public Config hazelCastConfig() {
Config config = new Config();
//解决同网段下,不同库项目
GroupConfig gc=new GroupConfig("hazelGroup");
config.setInstanceName("hazelcast-instance")
.addMapConfig(new MapConfig()
.setName("configuration")
// Map中存储条目的最大值[0~Integer.MAX_VALUE]。默认值为0。
.setMaxSizeConfig(new MaxSizeConfig(200, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
//数据释放策略[NONE|LRU|LFU]。这是Map作为缓存的一个参数,用于指定数据的回收算法。默认为NONE。LRU:“最近最少使用“策略。
.setEvictionPolicy(EvictionPolicy.LRU)
//数据留存时间[0~Integer.MAX_VALUE]。缓存相关参数,单位秒,默认为0。
.setTimeToLiveSeconds(-1))
.setGroupConfig(gc);
return config;
}
}
关于配置说明
eviction-policy
数据释放策略[NONE|LRU|LFU]。这是Map作为缓存的一个参数,用于指定数据的回收算法,默认为NONE。
- NONE:当设置为NONE时,不会发生数据回收,同时max-size会失效。但是任然可以使用time-to-live-seconds和max-idle-seconds参数来控制数据留存时间。
- LRU:“最近最少使用“策略。
- LFU:“最不常用的使用”策略。
time-to-live-seconds(TTL)
数据留存时间[0~Integ