springboot整合单机缓存ehcache的实现

下面是关于“springboot整合单机缓存ehcache的实现”的完整攻略。

1、什么是Ehcache

Ehcache是一个开源的、基于Java的、容易使用的缓存管理系统。它可以用于加速应用程序的性能和管理大量数据。

Ehcache提供了多种缓存的策略,包括最近最少使用(LRU)、最少使用(LFU)、FIFO等。Ehcache旨在为Java应用程序提供高速、灵活、可伸缩的缓存,从而帮助开发者构建快速、可靠的应用程序。

2、在SpringBoot中添加Ehcache依赖

可以直接在pom.xml文件中添加依赖:

<!-- ehcache 依赖-->
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.9.0</version>
</dependency>

3、开启Ehcache支持

在SpringBoot的启动类上,使用@EnableCaching注解开启缓存支持,同时在其内部的配置类里面添加相关配置。

@SpringBootApplication
@EnableCaching
public class DemoApplication {
    @Bean
    public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
        EhCacheManagerFactoryBean ehCacheManagerFactoryBean =
                new EhCacheManagerFactoryBean();
        ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
        ehCacheManagerFactoryBean.setShared(true);
        return ehCacheManagerFactoryBean;
    }
    //启用 Java源码 控制Ehcache缓存
    @Bean
    public KeyGenerator customKeyGenerator()
    {
        return new CustomKeyGenerator();
    }
}

其中,EhCacheManagerFactoryBean的setConfigLocation()方法是用来指定Ehcache的配置文件所在位置的,可以在该文件中对缓存进行详细的配置。

4、配置Ehcache缓存

在resources目录下创建ehcache.xml文件,我们可以在这里进行缓存的详细配置。例如:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <!--缓存名称 是区分不同缓存的-->
    <cache name="cache_demo"
           maxElementsInMemory="20"
           eternal="false"
           timeToIdleSeconds="300"
           timeToLiveSeconds="3600"
           overflowToDisk="false">
    </cache>
</ehcache>

这里配置了一个名为cache_demo的缓存,其中maxElementsInMemory表示最多缓存20个元素,timeToIdleSeconds表示在没有使用的情况下,该缓存可以保持300秒,timeToLiveSeconds表示该缓存的生存周期为3600秒,overflowToDisk表示当内存缓存已满时,是否允许缓存溢出到磁盘。

在后面使用的时候,只需要在方法上加上@Cacheable注解即可:

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    @Cacheable(value = "cache_demo", keyGenerator = "customKeyGenerator")
    public User getUserById(Integer id) {
        System.out.println("query from db");
        return userMapper.selectByPrimaryKey(id);
    }
}

这个例子中,使用了@Cacheable注解,用来启用缓存,其中value表示缓存的名称为cache_demo,keyGenerator表示缓存的key值生成策略为自定义的CustomKeyGenerator类,代码如下:

public class CustomKeyGenerator implements KeyGenerator {
    @Override
    public Object generate(Object o, Method method, Object... objects) {
        StringBuilder sb = new StringBuilder();
        sb.append(o.getClass().getName());
        sb.append(method.getName());
        for (Object obj : objects) {
            sb.append(obj.toString());
        }
        return sb.toString();
    }
}

这里我们使用了自定义的key值生成策略,按照方法所在类、方法名称和参数值对生成缓存的key值。这样就可以根据不同的参数生成不同的缓存,从而提高了缓存的效率。

至此,我们就完成了“springboot整合单机缓存ehcache的实现”的攻略。

附上第二个示例:

@Cacheable(value = "cache_demo", key = "#userId", condition = "#userId lt 10 and #userName.length() lt 20")
public User getUserByIdAndName(Integer userId, String userName) {
    System.out.println("query from db");
    return userMapper.selectByPrimaryKey(userId);
}

这个例子中,我们使用了@Cacheable注解的key属性和condition属性。其中,key表示缓存的key值为userId,condition表示只有当userId小于10且userName的长度小于20的时候才启用缓存。这样就能够根据具体的业务需求灵活地使用Ehcache缓存了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合单机缓存ehcache的实现 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python机器学习使数据更鲜活的可视化工具Pandas_Alive

    介绍 Pandas_Alive 是一个可以将 Pandas 数据帧 (dataframe) 即数据可视化为动画的工具。它为数据科学家提供了一个可视化的工具来探索和呈现数据。Pandas_Alive 使用 Matplotlib 音乐人才晋升来创建动画,并提供了更具可读性和易于使用的 Python 代码。 安装 Pandas_Alive 不是 Python 标准…

    python 2023年5月14日
    00
  • Pandas中根据条件替换列中的值的四种方式

    下面我详细讲解一下“Pandas中根据条件替换列中的值的四种方式”的完整攻略。 1. 使用.loc方法进行条件替换 DataFrame.loc[]方法可以通过布尔型的条件对DataFrame对象进行赋值操作。 先来看一个示例,我们可以使用下面的代码创建一个简单的DataFrame对象,该对象包含两列数据name和age: import pandas as p…

    python 2023年5月14日
    00
  • 如何转换Pandas数据框架中某一列的索引

    在Pandas中,可以使用set_index方法将数据框架(DataFrame)中的某一列设为索引。具体步骤如下: 导入pandas包: import pandas as pd 创建一个DataFrame,例如: df = pd.DataFrame({ ‘key1’:[‘A’, ‘B’, ‘C’, ‘D’, ‘E’], ‘key2’:[‘F’, ‘G’, ‘…

    python-answer 2023年3月27日
    00
  • Pandas DataFrame中loc()和iloc()的区别

    首先,需要说明的是,Pandas是一个Python数据分析库,提供高性能、易于使用的数据结构和数据分析工具。其中的DataFrame是一种二维表,类似于Excel中的一个工作表,可以方便地处理和分析数据。而loc()和iloc()分别是DataFrame中两个重要的索引方法,本文将详细讲解二者的区别。 相同点 在讲解二者的区别之前,先来说说它们的相同点。lo…

    python-answer 2023年3月27日
    00
  • Pandas数据类型之category的用法

    下面是对“Pandas数据类型之category的用法”的详细讲解攻略。 什么是category类型 Pandas中的category数据类型,称为分类数据类型,是针对具有固定数量的不同值的数据进行有效管理的数据类型。在这种数据类型中,重复的数据仅保存一次。 方便快捷地对这种数据进行分组和排序。 在数据集中,用户的性别、部门、优先级、状态、等级和类型等属性通…

    python 2023年5月14日
    00
  • Pandas通过index选择并获取行和列

    Pandas是一款数据处理和分析的速度很快、功能非常强大的Python库,它提供了许多方法和工具,方便我们对数据进行操作和分析。其中,pandas中的DataFrame是一种非常常用的数据结构,它可以将数据以表格的形式进行存储和展示,类似于Excel中的一个个表格。在pandas中,行与列都有一个类似于Excel中的编号,默认从0开始,行编号对应的是索引in…

    python 2023年5月14日
    00
  • 如何在Pandas中排除列

    在 Pandas 数据分析中,有时候我们需要从数据集中选择特定的列进行分析,而忽略掉其他的列。在这种情况下我们需要在 Pandas 中排除列。以下是在 Pandas 中排除列的完整攻略。 准备数据 首先,我们需要准备一份数据样本,这里以 Titanic 数据集为例: import pandas as pd # 读取数据集 df = pd.read_csv(‘…

    python-answer 2023年3月27日
    00
  • Pandas最常用的5种聚合函数

    Pandas聚合函数(Aggregation Function)是一种数据处理函数,用于对数据进行汇总、统计和分析。在数据分析中,常常需要对数据进行聚合计算,如计算平均值、总和、标准差、方差等。Pandas提供了多种聚合函数,可以方便地对数据进行统计和分析。 Pandas聚合函数可以应用于Series和DataFrame对象,可以对整个序列或数据框进行聚合,…

    Pandas 2023年3月5日
    00
合作推广
合作推广
分享本页
返回顶部