一直用redis,比较方便,最近接触encache,有点蒙了,有分布式缓存干嘛还要用encache。
集成
引入maven依赖
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>最新版本</version>
</dependency>
配置encache.xml
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
<cache alias="myCache">
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
<heap>200</heap>
<expiry>
<ttl unit="seconds">60</ttl>
</expiry>
</cache>
</config>
使用encache
如下是new的创建方法,实际做项目时一般是直接注入。
代码:
public class EhcacheDemo {
public static void main(String[] args) {
// 创建CacheManager
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withXmlConfig(new ClassPathResource("ehcache.xml").getInputStream())
.build(true);
// 获取Cache实例
Cache<String, String> myCache = cacheManager.getCache("myCache", String.class, String.class);
// 缓存数据
myCache.put("key1", "value1");
// 获取缓存数据
String value = myCache.get("key1");
System.out.println("Cached Value: " + value);
// 关闭CacheManager
cacheManager.close();
}
// 注意:这里假设有一个ClassPathResource工具类用于加载类路径下的资源,
// 实际使用时可能需要根据你的项目配置来加载ehcache.xml文件。
// 在Spring项目中,你可以直接使用Spring的资源加载机制。
}
encache和redis的对比
| 维度 | encache | redis |
|---|---|---|
| 速度 | 非常快 | 快,快慢关系是 encache>redis>数据库 |
| 容量 | 大。支持堆内存、堆外内存、磁盘多级数据结构,容量可以做到非常大。 | 支持的数量可以很大,单体数据如果比较大,会受网络速度影响。 |
| 分布式 | 算是支持吧,不推荐 | 支持 |
| 应用场景 | 二级缓存 | 分布式缓存 |
encache常见业务场景
1、作为二级缓存,提升系统容错性。
例如设计架构为 redis | encache | 数据库。
如果redis系统服务down掉,encache还可以用,避免请求都到db。
2、静态页面等数据使用encache可以大幅度提升效率。
其他
文档
https://www.ehcache.org/ # encache官网
Spring Boot集成encache快速入门Demo # 比较详细
866

被折叠的 条评论
为什么被折叠?



