首页 > 数据库 >SpringBoot集成redis集群

SpringBoot集成redis集群

时间:2023-09-03 11:01:19浏览次数:156  
标签:SpringBoot spring redis springframework 集群 import org data

1、添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <exclusions>
        <!-- 过滤lettuce,使用jedis作为redis客户端 -->
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
<!-- 用来序列化的 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>

 

2、新增redis配置

在application.properties中添加以下配置

#redis配置
spring.redis.database=0
#集群节点
spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384
#连接池最大连接数
spring.redis.jedis.pool.max-active=10  
#连接池中最大空闲连接数
spring.redis.jedis.pool.max-idle=8 
#连接池最大等待阻塞时间
spring.redis.jedis.pool.max-wait=-1
#连接池中最小空闲数
spring.redis.jedis.pool.min-idle=0
#访问超时时间
spring.redis.timeout=5000
#密码,如果有设置密码
#spring.redis.password=xxxx

 

3、配置RedisTemplate

  1 package com.demo.redis.config;
  2 
  3 import lombok.extern.slf4j.Slf4j;
  4 import org.springframework.beans.factory.annotation.Qualifier;
  5 import org.springframework.beans.factory.annotation.Value;
  6 import org.springframework.cache.CacheManager;
  7 import org.springframework.context.annotation.Bean;
  8 import org.springframework.context.annotation.Configuration;
  9 import org.springframework.data.redis.cache.RedisCacheConfiguration;
 10 import org.springframework.data.redis.cache.RedisCacheManager;
 11 import org.springframework.data.redis.connection.RedisClusterConfiguration;
 12 import org.springframework.data.redis.connection.RedisNode;
 13 import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
 14 import org.springframework.data.redis.core.RedisTemplate;
 15 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
 16 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 17 import org.springframework.data.redis.serializer.RedisSerializationContext;
 18 import org.springframework.data.redis.serializer.StringRedisSerializer;
 19 import redis.clients.jedis.JedisPoolConfig;
 20 
 21 import java.io.Serializable;
 22 import java.util.HashSet;
 23 import java.util.Set;
 24 
 25 @Configuration
 26 @Slf4j
 27 public class RedisConfig {
 28 
 29     @Value("${spring.redis.cluster.nodes}")
 30     private String host;
 31 //    @Value("${spring.redis.password}")
 32 //    private String password;
 33     @Value("${spring.redis.timeout}")
 34     private int connectionTimeout;
 35     @Value("${spring.redis.jedis.pool.max-active}")
 36     private int maxTotal;
 37     @Value("${spring.redis.jedis.pool.min-idle}")
 38     private int minIdle;
 39     @Value("${spring.redis.jedis.pool.max-idle}")
 40     private int maxIdle;
 41     @Value("${spring.redis.jedis.pool.max-wait}")
 42     private int maxWaitMillis;
 43 
 44     @Bean
 45     public RedisClusterConfiguration redisClusterConfiguration() {
 46         RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
 47         String[] hosts = host.split(",");
 48         Set<RedisNode> nodeList = new HashSet<RedisNode>();
 49         for (String hostAndPort : hosts) {
 50             String[] hostOrPort = hostAndPort.split(":");
 51             nodeList.add(new RedisNode(hostOrPort[0], Integer.parseInt(hostOrPort[1])));
 52         }
 53         redisClusterConfiguration.setClusterNodes(nodeList);
 54 //        redisClusterConfiguration.setMaxRedirects();
 55         return redisClusterConfiguration;
 56     }
 57 
 58     @Bean
 59     public JedisPoolConfig jedisPoolConfig() {
 60         JedisPoolConfig poolConfig = new JedisPoolConfig();
 61         poolConfig.setMaxIdle(this.maxIdle);
 62         poolConfig.setMinIdle(this.minIdle);
 63         poolConfig.setTestOnCreate(true);
 64         poolConfig.setTestOnBorrow(true);
 65         poolConfig.setTestOnReturn(true);
 66         poolConfig.setTestWhileIdle(true);
 67         return poolConfig;
 68     }
 69 
 70     @Bean("myJedisConnectionFactory")
 71     public JedisConnectionFactory jedisConnectionFactory(RedisClusterConfiguration redisClusterConfiguration,
 72                                                          JedisPoolConfig jedisPoolConfig) {
 73         JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(
 74                 redisClusterConfiguration, jedisPoolConfig);
 75 //        jedisConnectionFactory.setPassword(password);
 76         return jedisConnectionFactory;
 77     }
 78 
 79     @Bean
 80     RedisTemplate<String, Serializable> redisTemplate(@Qualifier("myJedisConnectionFactory")JedisConnectionFactory jedisConnectionFactory) {
 81         RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
 82         redisTemplate.setConnectionFactory(jedisConnectionFactory);
 83         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
 84         // 设置值(value)的序列化采用Jackson2JsonRedisSerializer。
 85         redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
 86         // 设置键(key)的序列化采用StringRedisSerializer。
 87         redisTemplate.setKeySerializer(new StringRedisSerializer());
 88         redisTemplate.setHashKeySerializer(new StringRedisSerializer());
 89         redisTemplate.afterPropertiesSet();
 90         return redisTemplate;
 91     }
 92 
 93     @Bean
 94     public CacheManager cacheManager(@Qualifier("myJedisConnectionFactory")JedisConnectionFactory jedisConnectionFactory) {
 95         RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
 96         RedisCacheConfiguration redisCacheConfiguration = config
 97                 .serializeKeysWith(
 98                         RedisSerializationContext.SerializationPair
 99                                 .fromSerializer(new StringRedisSerializer()))
100                 .serializeValuesWith(
101                         RedisSerializationContext.SerializationPair
102                                 .fromSerializer(new GenericJackson2JsonRedisSerializer()));
103 
104         return RedisCacheManager.builder(jedisConnectionFactory)
105                 .cacheDefaults(redisCacheConfiguration).build();
106     }
107 }

 

4、RedisTemplate的使用

 1 package com.demo.redis.controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.data.redis.core.RedisTemplate;
 5 import org.springframework.web.bind.annotation.GetMapping;
 6 import org.springframework.web.bind.annotation.PathVariable;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RestController;
 9 
10 @RestController
11 @RequestMapping("/api/redis/")
12 public class RedisController {
13 
14     @Autowired
15     private RedisTemplate redisTemplate;
16 
17     //1- 字符串string
18     @GetMapping("/string/set/{key}/{value}")
19     public Object set(@PathVariable String key, @PathVariable String value){
20         redisTemplate.opsForValue().set(key,value);
21         return "success";
22     }
23 
24     @GetMapping("/string/get/{key}")
25     public Object get(@PathVariable String key){
26         return  redisTemplate.opsForValue().get(key);
27     }
28 
29 }

 

标签:SpringBoot,spring,redis,springframework,集群,import,org,data
From: https://www.cnblogs.com/zq-boke/p/17674731.html

相关文章

  • 基于SpringBoot的电商应用系统的设计与实现
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的......
  • 基于SpringBoot的失物招领平台的设计与实现
    科学技术的不断发展,计算机的应用日渐成熟,其强大的功能给人们留下深刻的印象,它已经应用到了人类社会的各个层次的领域,发挥着重要的不可替换的作用。信息管理作为计算机应用的一部分,使用计算机进行管理,具有非常明显的优点。例如:方便快捷、高效率、低成本、存储量大、寿命长,这些优点能......
  • 基于SpringBoot的小学生身体素质测评管理系统设计与实现
    小学生身体素质测评管理系统分为管理员,教师,学生这三种角色,不同角色所操作的功能也不同,具体如下:学生:(1)登录功能,用户在登录时需预先进行身份角色的选择(学生,教师,管理员)。(2)查询成绩与体测分析报告,学生在登录首页后选择成绩查询功能便能看到具体每一项的体测数据和总的成绩与排名情况......
  • 基于SpringBoot技术的智慧生活商城系统设计与实现
    计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话和联系,极大的方便了人们的生活。所以说,智慧生活商城系统用计算机技术来进行设计,不仅在管......
  • 基于springboot科研项目验收管理系统
    使用旧方法对科研项目信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在科研项目信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的科研项目验收管理系统对景点城市信息,科研项目信息,评论信息,自助资讯......
  • SpringBoot启动启动项目出现o.s.b.d.LoggingFailureAnalysisReporter 错误解决方法
    把@SpringBootApplication改成@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})代码如下:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})publiccl......
  • 向量搜索技术:基于Elasticsearch/PostgreSQL/Redis扩展的向量搜索数据库或独立向量搜索
    理论基础与研究向量数据库用于非结构化文本、图片、音频、视频搜索、推荐,将他们转换为数字向量表示来进行相似性(ANN)搜索。存储和搜索高维向量是其特征之一,通常采用高级索引技术和算法如HNSW,Annoy,或Faiss来实现。不同于SQL数据库,向量数据库更像nosql,用户接受使用sdk/API......
  • 龙芯平台Hadoop集群搭建问题解决
    这几天一直在困扰我pycurl版本和本机的版本不符合他连接又连接的自己自带的版本与系统不相同低级也会报错 https://blog.csdn.net/u010910682/article/details/89496550/?ops_request_misc=&request_id=&biz_id=102&utm_term=pycurl7.45.2%20%E6%90%AD%E9%85%8Dlibcurl%E6%......
  • JavaFX+SpringBoot桌面项目并打包成exe可执行文件
    1.创建标准Maven工程2.引入依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=&quo......
  • Springboot项目打成jar包,如何设置存储路径?并且上传的静态文件如何访问?
    第一步设置资源资源存储路径找到需要保存指定文件路径添加以下代码//保存上传的资源文件路径,路径在部署jar包同级目录。Stringpath=System.getProperty("user.dir")+"/static/images/";Filedir=newFile(path);if(!dir.exists()){dir.mkdirs();}......