zoukankan      html  css  js  c++  java
  • JedisCluster和springboot整合

    maven依赖

    springboot整合jedisCluster相当简单,maven依赖如下:

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-redis</artifactId>
      </dependency>

    加了这一个依赖之后就不要再加上jedis的这一个依赖了:

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>

    加这个可能在本身测试的时候,可能会导致jedisCluster对象正常,但是在测试的时候会发现set数据的时候会出现问题,我把jedis的依赖去掉之后,这个问题解决,因此不要加上jedis的这一个依赖,spring-boot-starter-redis这一个引入相关jedis需要的包。

    application.properties配置

    这里的配置相当简单,只需要天上redis的相关地址就行了,如下:

    #redis cluster
    spring.redis.cache.clusterNodes=192.168.xx.xx:6379,192.168.xx.:6380,192.168.xx.xx:6381
    spring.redis.cache.commandTimeout=5000

    相当简单只需要几个redis的地址和端口的字符串就可以了。

    redisProperties

    在这里取springboot中的配置办法相当多,可以使用如下方法:

    @Inject
     private Environment environment;
     String properties = environment.getproperties("xxx")

    或者是在加上注解,@Value(“”)会在配置文件中取相关名字的配置。

    但在本文中决定使用另外一种方法,定义一个类命名问RedisProperties,在里面定义的字段与配置文件中相对应,即可取到配置,如下:

    @Component
    @ConfigurationProperties(prefix = "spring.redis.cache")
    @Data
    public class RedisProperties {
    
        private String clusterNodes;
        private Integer   commandTimeout;
    }

    如上,在使用时就能正常取到相关配置。

    JedisClusterConfig

     /**
        * 获取JedisCluster的配置
     */
    @Configuration
    @ConditionalOnClass({JedisCluster.class})
    @EnableConfigurationProperties(RedisProperties.class)
    public class JedisClusterConfig {
    
        @Inject
        private RedisProperties redisProperties;
    
        @Bean
        @Singleton
        public JedisCluster getJedisCluster() {
            String[] serverArray = redisProperties.getClusterNodes().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())));
            }
            return new JedisCluster(nodes, redisProperties.getCommandTimeout());
        }

    如上,配置就完成,现在进行测试一次。

    测试

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringApplicationConfiguration(classes = SpringBootWebApplication.class)
    @WebAppConfiguration
    public class TestJedisCluster {
    
        @Inject
        private JedisCluster jedisCluster;
    
        @Test
        public void testJedis() {
            jedisCluster.set("test_jedis_cluster", "38967");
            Assert.assertEquals("38967", jedisCluster.get("test_jedis_cluster"));
            jedisCluster.del("test_jedis_cluster");
        }
    }
  • 相关阅读:
    Nginx 学习笔记(一)如何配置一个安全的HTTPS网站服务器
    Ubuntu(16.04.2)学习笔记(一)如何解决dpkg: error processing install-info
    Linux 命令详解(八)Systemd 入门教程:实战篇
    Linux 命令详解(七)Systemd 入门教程:命令篇
    Linux 命令详解(六)Linux 守护进程的启动方法
    PHP7 学习笔记(四)PHP PSR-4 Autoloader 自动加载
    PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题
    WorkerMan 入门学习之(三)基础教程-Timer类的使用
    WorkerMan 入门学习之(二)基础教程-Connection类的使用
    数字证书相关知识结构PKI/PMI基本概念、组成部分、工作原理
  • 原文地址:https://www.cnblogs.com/alter888/p/8878892.html
Copyright © 2011-2022 走看看