Spring Cache整合Apache ignite

学校的一个小项目,在内卷的大环境下必须得整点花活。

Spring Cache大伙应该都比较熟悉,这里主要说一下怎么把ignite整合进去做cache的provider

首先引入相关依赖(注意,本机上需要安装apache ignite并配置环境变量,注意其版本应与此依赖中的版本对应),
其中2.8.1版本的ignite需要手动切换一下h2版本号(之前有一篇文章提过)

<properties>
    <ignite.version>2.8.1</ignite.version>
    <h2.version>1.4.197</h2.version>
</properties>

<!--    spring-cache with apache ignite core    -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-core</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-indexing</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring-data_2.2</artifactId>
    <version>${ignite.version}</version>
</dependency>

配置我依然采用代码里配置,大概如下(具体属性俺也不是很清楚,毕竟英语竞赛连个奖都没混到,自己去官网看文档吧):

package com.iamwxc.bookstore.configuration;

import org.apache.ignite.cache.spring.SpringCacheManager;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * @author https://github.com/anlowee
 */
@Configuration
@EnableCaching
public class IgniteCacheConfiguration {

    @Bean
    public CacheManager cacheManager() {
        SpringCacheManager cacheManager = new SpringCacheManager();
        cacheManager.setConfiguration(igniteConfiguration());
        return cacheManager;
    }

    @Bean
    public IgniteConfiguration igniteConfiguration() {
        IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
        igniteConfiguration.setClientMode(false);
        igniteConfiguration.setCacheConfiguration(cacheConfiguration());
        return igniteConfiguration;

    }

    @Bean
    public CacheConfiguration[] cacheConfiguration() {
        List<CacheConfiguration> cacheConfigurations = new ArrayList<>();

        cacheConfigurations.add(new CacheConfiguration("user"));
        cacheConfigurations.add(new CacheConfiguration("bookLikeAndWant"));

        return cacheConfigurations.toArray(new CacheConfiguration[cacheConfigurations.size()]);
    }

}

然后就可以在工程里随意操作了(一直很喜欢spring这种load-core的模式)

posted @ 2020-11-07 14:56  冲冲冲冲冲  阅读(626)  评论(0)    收藏  举报