正式环境都是用集群版redis,开发用的单机版,领导要求通过配置文件来确定是单机还是集群,由于单机版已经实现了,那么准备就在单机版基础上进行开发,然后发现spring boot1.2版本已经比较老,就升级版本,由于升级了spring boot版本,对应其他配置也进行了修改。最终修改的配置如下:
pom.xml
<properties> <java.version>1.8</java.version> <spring.version>4.3.9.RELEASE</spring.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!--原来是spring-boot-starter-redis--> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
redis.properties文件基本没有变:
# REDIS (RedisProperties) # Redis服务器地址(集群用逗号分隔) #spring.redis.host=xxx.xxx.xxx.xxx:xxxxx spring.redis.host=xxx.xxx.xxx.xxx:xxxxx,xxx.xxx.xxx.xxx:xxxxx # Redis服务器连接密码(默认为空) spring.redis.password=123456 # 连接超时时间(毫秒) spring.redis.timeout=2000 spring.redis.max-redirects=8
注意:host变成ip:port,集群多个ip和端口用“,”分割,为什么这样写spring框架中RedisClusterConfiguration类中就是这样分割。看一下源代码:
//RedisClusterConfiguration类: private static final String REDIS_CLUSTER_NODES_CONFIG_PROPERTY = "spring.redis.cluster.nodes"; //默认是配置这样的 …… public RedisClusterConfiguration(PropertySource<?> propertySource) { notNull(propertySource, "PropertySource must not be null!"); this.clusterNodes = new LinkedHashSet<RedisNode>(); //有spring.redis.cluster.nodes配置,分割这个属性,添加node if (propertySource.containsProperty(REDIS_CLUSTER_NODES_CONFIG_PROPERTY)) { appendClusterNodes(commaDelimitedListToSet(propertySource.getProperty(REDIS_CLUSTER_NODES_CONFIG_PROPERTY) .toString())); } …… } //函数会调用,用","分割: public static String[] commaDelimitedListToStringArray(String str) { return delimitedListToStringArray(str, ","); } //然后用":"分割组装成RedisNode private void appendClusterNodes(Set<String> hostAndPorts) { for (String hostAndPort : hostAndPorts) { addClusterNode(readHostAndPortFromString(hostAndPort)); } } private RedisNode readHostAndPortFromString(String hostAndPort) { String[] args = split(hostAndPort, ":"); notNull(args, "HostAndPort need to be seperated by ':'."); isTrue(args.length == 2, "Host and Port String needs to specified as host:port"); return new RedisNode(args[0], Integer.valueOf(args[1]).intValue()); }
在cacheconfig类中变成这样的:
@Bean public RedisClusterConfiguration getClusterConfiguration() { if (host.split(",").length > 1) { //如果是host是集群模式的才进行以下操作 Map<String, Object> source = new HashMap<String, Object>(); source.put("spring.redis.cluster.nodes", host); source.put("spring.redis.cluster.timeout", timeout); source.put("spring.redis.cluster.max-redirects", redirects); //在源码的注释中可以看到是这样配置,以为这样写就不用在Connection中不用在认证,后来确定太天真了
source.put("spring.redis.cluster.password", password); return new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source)); } else { return null; } } @Bean public JedisConnectionFactory jedisConnectionFactory() { if (host.split(",").length == 1) { JedisConnectionFactory factory = new JedisConnectionFactory(); factory.setHostName(host.split(":")[0]); factory.setPort(Integer.valueOf(host.split(":")[1])); factory.setPassword(password); factory.setTimeout(timeout); return factory; } else { JedisConnectionFactory jcf = new JedisConnectionFactory(getClusterConfiguration()); jcf.setPassword(password); //集群的密码认证 return jcf; } } //这样改造之后,redisTemplate模板就不用改了,之前写的redisUtil类也不用变了
相关推荐
通过配置文件实现连接单机redis或集群redis demo,实现开发时使用单机redis,线上使用集群redis
本压缩包文件包含的是关于如何在Spring Boot项目中集成和配置Redis,以及如何设置Redis的单机和集群模式的教程或示例代码。 首先,让我们详细了解一下Spring Boot集成Redis的基础知识。Spring Boot提供了自动配置的...
配置SpringCloud以连接Redis集群,你需要在Spring Boot的`application.yml`或`application.properties`中设置Redis连接信息。由于是集群模式,因此需要指定`cluster.nodes`属性,如下所示: ```yaml spring: data:...
在Spring Boot 2.1及以上版本中,我们可以利用`spring.redis.cluster.nodes`属性来实现零配置连接到Redis集群,只需将所有集群节点的IP和端口以逗号分隔的形式列出即可,如: ```properties spring.redis.cluster....
集成Spring Boot、JPA和Redis集群的过程大致如下: 1. 配置Spring Boot:在`application.yml`或`application.properties`文件中,我们需要配置数据库连接信息(如URL、用户名和密码)以及Redis的相关配置,包括集群...
本文将深入探讨如何在 Spring Boot 应用中整合 Redis,包括单机、集群和哨兵三种模式。 **单机版Redis整合** 1. **添加依赖**: 在 `pom.xml` 文件中,添加 Spring Boot 对 Redis 的支持,通常会引入 `spring-boot-...
1. Spring Boot应用配置,启用Redis连接池和集群配置。 2. Redis工具类,封装了基本的Redis操作,如存取对象、哈希操作等。 3. 示例实体类,演示如何存储和检索对象。 4. Maven配置,确保所有依赖正确导入并能正常...
在`pom.xml`或`build.gradle`文件中,你需要包含Spring Data Redis库和Spring Boot的Redis starter。对于Maven项目,可以在`pom.xml`中添加以下依赖: ```xml <groupId>org.springframework.boot <artifactId>...
配置Spring Boot连接Redis集群需要指定多个节点的地址,并启用集群模式。 在集群模式下,Spring Boot应用会根据数据的哈希槽分布自动将操作路由到相应的节点。需要注意的是,Redis集群不支持所有的数据类型,例如,...
这些参数的配置将影响Redis集群的行为和性能。 ### 第三步:注册配置 在SpringBoot 2.X中,需要注册Redis集群的配置,以便在应用程序中使用。可以通过使用@Configuration和@Bean注解来注册Redis集群的配置。 ### ...
本文档主要讲解如何搭建 Spring Boot 与 Redis 集群的关联操作,包括搭建 Redis 集群、Spring Boot 配置调用 Redis、实例代码操作和运行结果展示。同时,也会涉及到 Redis 的三种模式:单机模式、哨兵模式和集群模式...
7. **Sentinel或Cluster支持**:如果需要高可用性,可以配置Spring Boot连接Redis Sentinel集群或者直接连接Redis Cluster。 综上所述,"springboot_redis"项目是一个实践教程,演示了如何在Spring Boot应用中配置...
本教程将详细介绍如何在Spring Boot项目中整合Redis,涵盖单机版、Redis集群以及Redis Sentinel哨兵模式。 首先,我们要理解Spring Boot与Redis的基本整合。Spring Boot提供了自动配置功能,通过添加`spring-boot-...
标题 "Spring Boot + Spring Session + Redis" 涉及到的是在Java开发中,使用Spring Boot框架集成Spring Session和Redis来实现会话管理的技术方案。这个解决方案主要解决分布式系统中的session共享问题,使得用户在...
Spring Boot和Hazelcast使用详解 Spring Boot和Hazelcast使用详解是指如何将Hazelcast集成到Spring Boot项目中,以提高...但是,需要合理配置Hazelcast实例和依赖项,确保Hazelcast的版本与Spring Boot的版本相兼容。
在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存...
通过以上步骤,你可以成功地将 Redis 整合到 Spring 应用中,并实现对 Redis 集群的支持。这将帮助你的应用程序更好地利用 Redis 的高性能特性,同时具备良好的扩展性。记得在实际应用中根据具体需求调整配置,确保...
Spring Cloud则是一个基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...
springboot整合redis集群(三种方式)源码
根据提供的标题、描述、标签以及部分链接内容,我们可以推断出该主题主要涉及Spring Boot、MyBatis、Spring Security和Redis等技术栈的综合运用。接下来,我们将详细探讨这些技术的关键知识点及其在实际项目中的应用...