`
zk_chs
  • 浏览: 215870 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

通过spring配置redis cluster

阅读更多

上周spring data redis更新了1.7.1版本,正式支持redis cluster集群模式,这里就介绍一下关于redis cluster集群的相关配置,例如redis连接池等内容。不过想要使用redis cluster集群的话,还是需要你先启动redis cluster才行,具体操作可以参考我之前的redis cluster集群搭建

 

1、与之前的文章相同,不采用xml,而是使用代码的方式进行配置,首先我们先定义一个redis的配置类:

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "spring.redis.cluster")
public class RedisClusterConfigProperties {
  private List<String> nodes;
  getter/setter...
}

在这里,需要你自己先定义一个用来保存redis配置的properties或yml文件,如下:

spring.redis.cluster.nodes[0]=192.168.0.1:6379
spring.redis.cluster.nodes[1]=192.168.0.2:6379
或
spring:
   redis:
      cluster:
         nodes:
            - 192.168.0.1:6379
            - 192.168.0.2:6379

spring会自动读取并将内容set进我们的nodes中,其中,nodes配置多个是为了防止单个节点挂掉,理论上只需要配置一个节点即可。

 

2、配置redis cluster的bean:

@Configuration
public class RedisClusterConfig {

  @Autowired
  private RedisClusterConfigProperties clusterProperties;

  @Bean
  private RedisConnectionFactory connectionFactory() {
    private JedisConnectionFactory factory = new JedisConnectionFactory(new RedisClusterConfiguration(clusterProperties.getNodes()))
    /** 如果需要定制连接池,可以使用下面的方式进行配置 */
//    private JedisPoolConfig pool = new JedisPoolConfig();
//    pool.setMaxIdle(8)
//    pool.setMaxTotal(8)
//    pool.set...
//    factory.setPoolConfig(pool)
    return factory;
  }

  /**
    * 对redis的存取,据需要先行转换成byte[]
    **/
  @Bean
  @Autowired
  private RedisClusterConnection redisClusterConnection(RedisConnectionFactory connectionFactory) {
    return connectionFactory.getClusterConnection();
  }

  /**
    * 该bean可以直接操作String,无需转成byte[]
    **/
  @Bean
  @Autowired
  private StringRedisTemplate stringRedisTemplate(RedisConnectionFactory connectionFactory) {
    return new StringRedisTemplate(connectionFactory);
  }

}

上述总共配置了3个bean,其中,第一个bean为redis cluster的connection factory,后两个为redis客户端操作模板。

 

在factory中,可以自定义连接池pool,maxIdle与maxTotal分别表示最大空闲连接和总连接,spring默认为我们配置的连接池内,这两项均为8。

 

后 面的两个bean可以直接用,总的来说能用StringRedisTemplate就用,毕竟减少了很多麻烦的操作,只不过一些api与redis命令行 不一样,需要再稍微看一下,而RedisClusterConnection的api就和redis命令行一样了,但是需要先将你的内容转换成 byte[]才行。

 

 

2
7
分享到:
评论
1 楼 ygaolei123 2017-04-18  
帮了我大忙,谢谢

相关推荐

    RedisCluster集群(Spring访问Redis)

    本文将详细介绍RedisCluster集群的架构及原理,并探讨如何通过Spring Data Redis模块实现对Redis Cluster的访问。 ### 1. RedisCluster集群概述 Redis Cluster是Redis官方提供的分布式解决方案,它将数据分片到多...

    springcloud部署redis集群

    SpringCloud通过集成Spring Data Redis模块,使得在微服务架构中与Redis进行交互变得非常便捷。以下将详细介绍如何在SpringCloud中配置和使用Redis集群。 首先,你需要了解Redis集群的基本概念。Redis集群通过数据...

    redis cluster spring整合代码

    Redis Cluster通过将数据分割成多个槽(slots)并分布在多个节点之间来实现数据的分布式存储,每个节点负责一部分槽,从而达到水平扩展的目的。 **Spring与Redis的整合** Spring框架提供了一套完善的集成Redis的...

    spring redis-cluster 整合

    配置完成后,Spring MVC中的控制器可以通过`@Autowired`注解注入`RedisTemplate`,进而方便地执行Redis命令,如存取数据、执行哈希操作等。 对于`ssmdemo`这个项目,我们假设这是一个包含Spring MVC、Redis集群整合...

    redis-cluster和spring集成,基于cache注解

    综上所述,"redis-cluster和spring集成,基于cache注解" 的项目是一个使用 Spring Cache 集成 Redis 集群的实例,旨在通过注解的方式简化缓存管理,提高应用性能。开发者可以通过导入提供的项目,快速了解和实践这一...

    spring + redis集群

    spring.redis.cluster.nodes=192.168.1.1:7001,192.168.1.1:7002,192.168.1.1:7003 ``` 接下来,我们可以创建一个RedisTemplate或StringRedisTemplate实例,它们是Spring Data Redis提供的核心模板类,用于执行各种...

    基于Spring支持的redis线程池,(redis Cluster,主从Redis,sentenl)

    redis命令实践,基于Spring支持的redis线程池,(redis Cluster,主从Redis,sentenl)。适用人群:计算机,软件工程、人工智能,网络安全,电子信息等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料...

    spring整合redis(spring模板+连接池+json序列化+cluster集群).zip

    通过配置`RedisConnectionFactory`,我们可以创建一个`RedisTemplate`实例,并定义其Key、Value的序列化方式。例如,可以使用`StringRedisSerializer`作为Key的序列化器,而`Jackson2JsonRedisSerializer`作为Value...

    spring集成redis,集成redis集群

    当我们谈论“Spring集成Redis集群”时,这意味着我们要在Spring应用中配置和使用多个Redis实例,形成一个高可用、高并发的数据库解决方案。 首先,让我们深入理解Spring对Redis支持的基本概念。Spring Data Redis...

    RedisCluster.rar

    Spring Data Redis 提供了对 RedisCluster 的支持,通过配置 `spring.data.redis.cluster.nodes` 指定集群节点地址,以及 `spring.data.redis.cluster.maxRedirects` 设置重定向次数。在应用中,你可以使用 ...

    spring+redis的Demo

    - 配置Redis时,根据实际环境调整连接参数,如使用Sentinel或Cluster模式,需要额外配置。 - 在生产环境中,推荐使用Jedis或Lettuce客户端,以及自定义序列化策略,以提高性能和兼容性。 - 考虑到数据一致性,使用...

    最全redis线程池实现,Spring支持,redis Cluster线程池,主从Redis读写分离,sentenl读写分离等

    在Spring中,我们可以通过配置不同的ConnectionFactory分别连接主库和从库,然后在业务代码中根据需求选择读写操作。例如,读操作可以选择从库,写操作则连接主库。 4. **Sentinel读写分离**: Redis Sentinel是高...

    springboot整合redis集群零配置

    在Spring Boot 2.1及以上版本中,我们可以利用`spring.redis.cluster.nodes`属性来实现零配置连接到Redis集群,只需将所有集群节点的IP和端口以逗号分隔的形式列出即可,如: ```properties spring.redis.cluster....

    spring集成redis cluster详解

    主要介绍了spring集成redis cluster详解,分享了maven依赖,Spring配置,增加connect-redis.properties 配置文件等相关内容,具有一定参考价值,需要的朋友可以了解下。

    Spring集成redis集群

    综上所述,Spring集成Redis集群需要配置集群节点信息、创建ConnectionFactory并设置RedisTemplate,然后就可以在Spring应用中正常使用Redis集群了。在实际应用中,还需要考虑数据分布策略、故障恢复和监控等问题,以...

    spring-redis

    8. **Redis Sentinel与Cluster支持**:Spring Data Redis还支持高可用性配置,如Redis Sentinel监控和故障转移,以及Redis Cluster的分片和容错。 9. **RedisTemplate的定制**:可以通过`RedisTemplate`的bean配置...

    spring data redis 官方文档

    - **启用集群**:Spring Data Redis 支持 Redis 集群模式,可以通过简单配置实现高可用和负载均衡。 - **操作 Redis Cluster Connection**:提供了专门的方法来操作集群连接,包括节点发现、数据分区等功能。 - **...

    spring整合redis

    在Spring整合Redis的过程中,我们通常还会涉及到Redis的集群配置、Sentinel或Cluster管理、事务支持、发布订阅等功能。以上只是一个基础的整合过程,实际应用中可能需要根据具体需求进行更复杂的定制和优化。在`...

    Spring整合Redis

    - 在生产环境中,为了保证高可用性,可能会配置Redis Sentinel或者Redis Cluster,这时配置会有所不同。 - 考虑到数据一致性,需要合理设计缓存更新策略,如Cache Aside、Write Through、Write Behind等。 - 注意...

    spring_redis maven实例

    9. **Sentinel或Cluster支持**: 如果实例包含这部分内容,会讲解如何使用Spring Data Redis与Redis Sentinel或Redis Cluster配合,实现故障检测和自动故障转移。 10. **实践与调试**: 通过实际运行示例代码,可以更...

Global site tag (gtag.js) - Google Analytics