SpingBoot之集成Redis集群

一、安装Redis集群

安装步骤参照网上教程,Mac安装步骤参照https://github.com/muyl/mac-docker-redis-cluster

二、创建SpringBoot工程

  1. 创建Redis配置类

    package com.example.chapterredis.common.config;
    
    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import redis.clients.jedis.HostAndPort;
    import redis.clients.jedis.JedisCluster;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * @author tony
     */
    @Configuration
    public class RedisConfiguration {
    
        private static final Logger logger = LoggerFactory.getLogger(RedisConfiguration.class);
    
        @Value("${spring.redis.clusterNodes}")
        private String  clusterNodes;
        @Value("${spring.redis.password}")
        private String  auth;
        @Value("${spring.redis.pool.maxActive}")
        private Integer maxTotal;
        @Value("${spring.redis.pool.minIdle}")
        private Integer minIdle;
        @Value("${spring.redis.pool.maxIdle}")
        private Integer maxIdle;
        @Value("${spring.redis.pool.maxWait}")
        private Long    maxWaitMillis;
        @Value("${spring.redis.pool.commandTimeout}")
        private int     commandTimeout;
    
        @Bean
        public JedisCluster jedisCluster() {
            String[] serverArray = clusterNodes.split(",");
            Set<HostAndPort> nodes = new HashSet<>();
            for (String ipPort : serverArray) {
                String[] ipPortPair = ipPort.split(":");
                nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
            }
    
            if (!nodes.isEmpty()) {
                String password = getAuth(auth);
                logger.info("redis password:{}", password);
                GenericObjectPoolConfig pool = new GenericObjectPoolConfig();
                pool.setMaxTotal(maxTotal);
                pool.setMinIdle(minIdle);
                pool.setMaxIdle(maxIdle);
                pool.setMaxWaitMillis(maxWaitMillis);
                return new JedisCluster(nodes, commandTimeout, commandTimeout, 5, password, pool);
            }
            return null;
        }
    
        private String getAuth(String auth) {
            return "".equals(auth) ? null : auth;
        }
    }
    
  2. SpringBoot属性文件
    spring.redis.clusterNodes=localhost:7000,localhost:7001,localhost:7002,localhost:7003,localhost:7004,localhost:7005
    spring.redis.password=
    spring.redis.pool.maxActive=5
    spring.redis.pool.minIdle=5
    spring.redis.pool.maxIdle=1
    spring.redis.pool.maxWait=3000
    spring.redis.pool.commandTimeout=5000
  3. SpringBoot启动类
    package com.example.chapterredis;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ChapterRedisApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ChapterRedisApplication.class, args);
        }
    }
    
  4. 测试类
    package com.example.chapterredis;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import redis.clients.jedis.JedisCluster;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes={ChapterRedisApplication.class})
    public class ChapterRedisApplicationTests {
    
        @Autowired
        private JedisCluster jedisCluster;
    
        @Test
        public void test2() {
            jedisCluster.set("aaa","123");
            System.out.println(jedisCluster.get("aaa"));
        }
    
    }
    
三、工程源代码

https://gitee.com/shanksV/chapter-redis.git

比你优秀的人比你还努力,你有什么资格不去奋斗!!!

原文地址:https://www.cnblogs.com/muyl/p/11886481.html

时间: 2024-08-29 22:12:02

SpingBoot之集成Redis集群的相关文章

Spring集成redis集群

Spring集成redis集群 有密码 Maven <jedis.version>2.9.0</jedis.version> <spring-data-redis.version>1.7.1.RELEASE</spring-data-redis.version> <spring.version>3.2.17.RELEASE</spring.version> <dependency> <groupId>org.s

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

前提:搭建好redis集群环境,搭建方式请看:https://www.cnblogs.com/xymBlog/p/9300574.html 1. 新建工程,pom.xml文件中添加redis支持 <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-redis</artifactId></depend

Java集成redis集群

spring-redis.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www

Linux安装redis集群

linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是新浪云服务器: redis3.0以后开始支持集群. 前言:redis用什么做集群? 用一个叫redis-trib.rb的ruby脚本.redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/).是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb是redis作者用ruby完成的.所以redis集群需要先安

Redis集群redis主从自动切换Sentinel(哨兵模式)

Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave3):Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即mast

redis 集群热备自动切换sentinel配置实战

Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave3):Master-Slave切换后,master_redis.conf.slave_redis.conf和sentinel.conf的内容都会发生改变,即mast

Redis集群技术及Codis实践

"高效运维最佳实践"是InfoQ在2015年推出的精品专栏,由触控科技运维总监萧田国撰写,InfoQ总编辑崔康策划. 前言 如开篇文章所言,高效运维包括管理的专业化和技术的专业化.前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化.希望读者朋友们能适应这个转换,谢谢. 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍.在这个演化过程中,缓存系统扮演了举足轻重的角色. 运维进化到今天,已经不是重复造轮子的时代.所以,我们在架构优化和自动化运维

Redis 集群方案介绍

由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法满足业务的需求(例如新浪微博就曾经用Redis存储了超过1TB的数据).Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版.各大企业在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各自的Redis集群方案.这

Java Spring mvc 操作 Redis 及 Redis 集群

本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 Redis 是什么,能做什么 Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制.Lua脚本.LRU收回.事务以及不同级别磁盘持久化功能,同时通过Redis