`

springboot集成redis集群

 
阅读更多

一、介绍

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集成Redis集群 在本文档中,我们将指导您如何在SpringBoot 2.X中集成Redis集群。下面是相关的知识点: 集成Redis集群的必要性 在实际应用中,使用Redis集群可以提高系统的可扩展性和可靠性。Redis集群...

    springboot集成redis集群,redis安装包配置

    在本文中,我们将深入探讨如何在SpringBoot应用中集成Redis集群以及如何配置Redis服务器。首先,Redis是一个开源的、基于键值对的数据存储系统,常用于数据库、缓存和消息中间件。它以其高性能和易用性而备受青睐。...

    springboot整合redis集群零配置

    首先,让我们来看看"Springboot整合Redis集群,零配置方式"。在Spring Boot中,我们可以通过引入`spring-boot-starter-data-redis`依赖来启用Redis支持。但是,要配置Redis集群,通常需要设置多个节点地址、密码、...

    springboot整合redis集群(三种方式)源码

    springboot整合redis集群(三种方式)源码

    springboot+redis单机与集群

    需要注意的是,Redis集群不支持所有的数据类型,例如,单个键的事务和某些复杂的操作在集群中不可用。因此,在设计数据模型和业务逻辑时,需要考虑到这些限制。 总的来说,Spring Boot+Redis的组合在实际开发中非常...

    SpringBoot集成Redis集群就这么Easy

    这次写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis集群搭建 搭建完redis集群环境后,开始springboot之旅 1、REDIS介绍 redis的介绍及应用场景参考 redis介绍 2、...

    springboot整合redis,springboot连接redis集群

    在Spring Boot框架中整合Redis和连接Redis集群是一项常见的任务,特别是在构建高性能、高并发的Web应用时。Redis是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。Spring Boot提供了对...

    springboot+redis集群实例,linux 安装redis集群

    在本项目中,我们将探讨如何将Spring Boot应用与Redis集群集成,并在Linux环境中安装和部署Redis集群。这个过程涵盖了多个IT知识点,包括Spring Boot的应用开发、Redis缓存系统以及Linux服务器管理。 首先,Spring ...

    Springboot+redis集成

    SpringBoot可以通过`JedisCluster`或`Lettuce`客户端来访问Redis集群。 **五、高并发与分布式** 在高并发场景下,Redis可作为缓存服务器,减少数据库的访问压力。通过`@Cacheable`、`@CacheEvict`等注解,...

    SpringBoot集成Redis-Demo

    SpringBoot集成Redis-Demo是一个关于如何在Java应用中利用SpringBoot框架与Redis进行集成的实践教程。在这个项目中,我们将探讨如何配置、使用以及优化SpringBoot应用中的Redis数据存储。 首先,SpringBoot简化了...

    springboot_redis

    描述中提到的“spring boot 集成redis”是一个示例项目,提供了如何在Spring Boot应用中整合Redis的具体步骤。通过访问提供的博客链接(http://blog.csdn.net/woniu211111/article/details/54564308),我们可以深入...

    SpringBoot整合Redis实例

    3. 使用ClusterRedisConnectionFactory:在配置类中创建并返回ClusterRedisConnectionFactory对象,这将连接到Redis集群。 4. 创建RedisTemplate或StringRedisTemplate,使用ClusterRedisConnectionFactory,并配置...

    springboot整合redis集群、freemarker模板和多索引库solr,同时将redis集群作mybatis的二级缓存

    本项目着重讲解如何在Spring Boot应用中整合Redis集群、FreeMarker模板引擎以及多索引库Solr,并将Redis集群用作MyBatis的二级缓存。 首先,让我们深入了解一下每个组件的核心功能: 1. **Spring Boot**:Spring ...

    SpringBoot集成Redis哨兵Demo

    总结来说,SpringBoot集成Redis哨兵提供了一种简单有效的方式,确保应用能够连接到高可用的Redis集群,并在主服务器出现问题时自动切换,保持服务的连续性。通过正确配置和使用,可以显著提升系统的稳定性和可靠性。

    SpringBoot集成Redis应用配置(附完整配置文件)

    本文将详细介绍如何在Spring Boot项目中集成Redis,以实现高效的数据存储和检索。 首先,集成Redis需要在Spring Boot项目中添加相应的依赖。在`pom.xml`或`build.gradle`文件中,你需要引入Spring Data Redis和...

    springboot基于redis分布式锁

    要在SpringBoot中集成Redis,你需要先在项目中添加对应的依赖。SpringBoot提供了对Redis的自动配置支持,只需在`pom.xml`或`build.gradle`文件中引入`spring-boot-starter-data-redis`依赖。 ```xml &lt;groupId&gt;org...

    springboot整合redis集群过程解析

    Spring Boot 整合 Redis 集群是当前流行的技术栈之一,本文将详细介绍 Spring Boot 如何与 Redis 集群集成,包括依赖项配置、连接池配置、Sentinel 配置、Redis 服务实现、控制器实现等方面的内容。 依赖项配置 ...

    Springboot2.X集成redis集群(Lettuce)连接的方法

    主要介绍了Springboot2.X集成redis集群(Lettuce)连接的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    springboot集成测试里的redis

    SpringBoot 集成测试中的 Redis 在 SpringBoot 项目中,集成测试是一个非常重要的步骤,它可以确保我们的应用程序在不同的场景下都能正常工作。在这个过程中,Redis 是一个非常重要的组件,因为它可以作为缓存层、...

    springboot整合redis(单机 集群).pdf

    接下来,我们将讨论SpringBoot如何整合Redis集群。相较于单机模式,集群模式需要更多的配置和理解。在Redis 3.x版本中,引入了集群支持,允许我们通过多个节点实现数据的分布式存储。要整合Redis集群,我们需要使用`...

Global site tag (gtag.js) - Google Analytics