一、介绍
SpringBoot开启注解缓存之后可以抗压应付大流量访问的情况,而且开发非常方便。本文接的是Redis集群,我在整合的时候遇到了一些问题,解决完成后记录一下
二、代码与依赖
配置类代码,加到SpringBoot启动类所属包下面即可(SpringBoot只会扫描启动类之下的包,所以,最好将它放的高级目录)
package com.example.config;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import redis.clients.jedis.JedisPoolConfig;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
/**
* @author:陈为福
* @date:2018/1/11
*/
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
@Bean
public RedisClusterConfiguration getRedisCluster() {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
Set<RedisNode> jedisClusterNodes = new HashSet<RedisNode>();
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7000));
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7001));
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7002));
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7003));
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7004));
jedisClusterNodes.add(new RedisNode("192.168.1.142", 7005));
redisClusterConfiguration.setClusterNodes(jedisClusterNodes);
return redisClusterConfiguration;
}
@Bean
public JedisPoolConfig getJedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(150);
jedisPoolConfig.setMaxIdle(30);
jedisPoolConfig.setMinIdle(10);
return jedisPoolConfig;
}
@Bean
public JedisConnectionFactory redisConnectionFactory(RedisClusterConfiguration redisClusterConfiguration, JedisPoolConfig jedisPoolConfig) {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration);
redisConnectionFactory.setPoolConfig(jedisPoolConfig);
return redisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration(3000);
return cacheManager;
}
@Bean
public KeyGenerator customKeyGenerator() {
return new 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());
}
System.out.println(sb.toString());
return sb.toString();
}
};
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
pom.xml(没用的依赖可以删掉,这里是整合了mybatis):
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.winter</groupId>
<artifactId>springboot-mybatis-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-mybatis-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.6.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
————————————————
版权声明:本文为CSDN博主「chenweifu365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenweifu365/article/details/79179033
相关推荐
SpringBoot集成Redis集群 在本文档中,我们将指导您如何在SpringBoot 2.X中集成Redis集群。下面是相关的知识点: 集成Redis集群的必要性 在实际应用中,使用Redis集群可以提高系统的可扩展性和可靠性。Redis集群...
在本文中,我们将深入探讨如何在SpringBoot应用中集成Redis集群以及如何配置Redis服务器。首先,Redis是一个开源的、基于键值对的数据存储系统,常用于数据库、缓存和消息中间件。它以其高性能和易用性而备受青睐。...
首先,让我们来看看"Springboot整合Redis集群,零配置方式"。在Spring Boot中,我们可以通过引入`spring-boot-starter-data-redis`依赖来启用Redis支持。但是,要配置Redis集群,通常需要设置多个节点地址、密码、...
springboot整合redis集群(三种方式)源码
需要注意的是,Redis集群不支持所有的数据类型,例如,单个键的事务和某些复杂的操作在集群中不可用。因此,在设计数据模型和业务逻辑时,需要考虑到这些限制。 总的来说,Spring Boot+Redis的组合在实际开发中非常...
这次写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis集群搭建 搭建完redis集群环境后,开始springboot之旅 1、REDIS介绍 redis的介绍及应用场景参考 redis介绍 2、...
在Spring Boot框架中整合Redis和连接Redis集群是一项常见的任务,特别是在构建高性能、高并发的Web应用时。Redis是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。Spring Boot提供了对...
在本项目中,我们将探讨如何将Spring Boot应用与Redis集群集成,并在Linux环境中安装和部署Redis集群。这个过程涵盖了多个IT知识点,包括Spring Boot的应用开发、Redis缓存系统以及Linux服务器管理。 首先,Spring ...
SpringBoot可以通过`JedisCluster`或`Lettuce`客户端来访问Redis集群。 **五、高并发与分布式** 在高并发场景下,Redis可作为缓存服务器,减少数据库的访问压力。通过`@Cacheable`、`@CacheEvict`等注解,...
SpringBoot集成Redis-Demo是一个关于如何在Java应用中利用SpringBoot框架与Redis进行集成的实践教程。在这个项目中,我们将探讨如何配置、使用以及优化SpringBoot应用中的Redis数据存储。 首先,SpringBoot简化了...
描述中提到的“spring boot 集成redis”是一个示例项目,提供了如何在Spring Boot应用中整合Redis的具体步骤。通过访问提供的博客链接(http://blog.csdn.net/woniu211111/article/details/54564308),我们可以深入...
3. 使用ClusterRedisConnectionFactory:在配置类中创建并返回ClusterRedisConnectionFactory对象,这将连接到Redis集群。 4. 创建RedisTemplate或StringRedisTemplate,使用ClusterRedisConnectionFactory,并配置...
本项目着重讲解如何在Spring Boot应用中整合Redis集群、FreeMarker模板引擎以及多索引库Solr,并将Redis集群用作MyBatis的二级缓存。 首先,让我们深入了解一下每个组件的核心功能: 1. **Spring Boot**:Spring ...
总结来说,SpringBoot集成Redis哨兵提供了一种简单有效的方式,确保应用能够连接到高可用的Redis集群,并在主服务器出现问题时自动切换,保持服务的连续性。通过正确配置和使用,可以显著提升系统的稳定性和可靠性。
本文将详细介绍如何在Spring Boot项目中集成Redis,以实现高效的数据存储和检索。 首先,集成Redis需要在Spring Boot项目中添加相应的依赖。在`pom.xml`或`build.gradle`文件中,你需要引入Spring Data Redis和...
要在SpringBoot中集成Redis,你需要先在项目中添加对应的依赖。SpringBoot提供了对Redis的自动配置支持,只需在`pom.xml`或`build.gradle`文件中引入`spring-boot-starter-data-redis`依赖。 ```xml <groupId>org...
Spring Boot 整合 Redis 集群是当前流行的技术栈之一,本文将详细介绍 Spring Boot 如何与 Redis 集群集成,包括依赖项配置、连接池配置、Sentinel 配置、Redis 服务实现、控制器实现等方面的内容。 依赖项配置 ...
主要介绍了Springboot2.X集成redis集群(Lettuce)连接的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringBoot 集成测试中的 Redis 在 SpringBoot 项目中,集成测试是一个非常重要的步骤,它可以确保我们的应用程序在不同的场景下都能正常工作。在这个过程中,Redis 是一个非常重要的组件,因为它可以作为缓存层、...
接下来,我们将讨论SpringBoot如何整合Redis集群。相较于单机模式,集群模式需要更多的配置和理解。在Redis 3.x版本中,引入了集群支持,允许我们通过多个节点实现数据的分布式存储。要整合Redis集群,我们需要使用`...