美文网首页SpringBoot精选IT@程序员猿媛
Windows安装Redis集群,并整合SpringBoot2

Windows安装Redis集群,并整合SpringBoot2

作者: 程就人生 | 来源:发表于2020-01-17 21:55 被阅读0次

    Redis是用C语言开发的,一般越是接近底层的语言,它所开发出来的东西,在运行速度上就越快,性能上也越优。Redis不仅仅是内存数据库,也可以将数据持久化到文件里,还可以集群。Redis集群又分为三种,一种是主从库模式,一种是Sentinel模式,还有一种就是Cluster模式。

    现在来探讨一下Cluster模式,Redis在Windows上是如何集成的。
    首先,Redis下载安装配置;
    1)由于这里使用的win10系统,官网上又没有支持win10的最新版本,所以只能使用3.2版本的redis。redis下载地址: https://github.com/MSOpenTech/redis/releases

    下载截图
    2)下载后,解压到一个文件夹下,用来创建redis集群;

    3)打开redis.windows.conf,加入以下配置,并把默认配置注释掉;
    port 6379
    #开启实例的集群模式
    cluster-enabled yes
    #设定保存节点配置文件的路径
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 5000
    appendonly yes
    

    4)加一个start.bat文件,用于每个redis的启动,内容如下;

    @echo off
    redis-server.exe redis.windows.conf
    @pause
    

    5)把Redis-6379文件夹拷贝成五份,把文件名和配置文件里的端口修改掉;

    第二步,Ruby的安装;
    1)下载地址:https://rubyinstaller.org/downloads/

    下载截图
    2)安装;


    第三步,安装Ruby关于Redis的驱动redis-xxxx.gem;
    1)下载地址:https://rubygems.org/pages/download


    2)解压,来到解压目录,执行命令;
    ruby setup.rb
    
    执行结果图
    3)安装gem驱动
    gem install redis
    
    安装成功示意图

    第四步,下载redis-trib.rb
    1)下载地址:https://raw.githubusercontent.com/MSOpenTech/redis/3.2/src/redis-trib.rb
    将文件另存在redis-cluster文件夹下;

    第五步,运行集群命令;
    1)把每个redis启动,点击目录下的start.bat文件启动,共启动六个redis窗口;


    2)使用管理员身份进入redis集群文件夹下,执行集群命令;
    redis-trib.rb create --replicas 1 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
    

    看到这个界面,redis集群已经安装成功了,接下来使用客户端进行连接测试;


    命令打印结果

    安装完成后,可以更改配置文件,设置密码,然后重启;

    requirepass 123123
    masterauth 123123
    

    接下来,就看看是springboot2下是如何集成的;
    首先,在pom中引入必须的架包;

    <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    

    第二步,添加配置文件;

    #Redis cluster
    spring.redis.lettuce.pool.max-idle=100
    spring.redis.lettuce.pool.min-idle=50
    spring.redis.lettuce.pool.max-wait=2000
    
    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.cluster.max-redirects=6
    spring.redis.password=
    

    第三步,添加redis的config文件;

    import org.springframework.boot.autoconfigure.AutoConfigureAfter;
    import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
     * redis集群配置
     * @author 程就人生
     * @date 2020年1月17日
     */
    @Configuration
    @AutoConfigureAfter(RedisAutoConfiguration.class)
    public class CRedisConfig {
        
        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Bean
        public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory factory) {
            
            RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
            
            template.setConnectionFactory(factory);
            
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            
            ObjectMapper om = new ObjectMapper();
            
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            
            jackson2JsonRedisSerializer.setObjectMapper(om);
            
            StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
            
            // key采用String的序列化方式
            template.setKeySerializer(stringRedisSerializer);
            
            // hash的key也采用String的序列化方式
            template.setHashKeySerializer(stringRedisSerializer);
            
            // value序列化方式采用jackson
            template.setValueSerializer(jackson2JsonRedisSerializer);
            
            // hash的value序列化方式采用jackson
            template.setHashValueSerializer(jackson2JsonRedisSerializer);
            
            template.afterPropertiesSet();
             
            return template;
        }
    }
    

    第四步,测试文件;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class IndexController {
    
        @Autowired
        private RedisTemplate<String,Object> redisTemplate;
        
        @GetMapping("/index")
        public void add(String key,String val){
            redisTemplate.opsForHash().put("AAAA", key, val);
        }
    }
    

    最后,测试;
    启动项目,在浏览器地址栏输入:http://localhost:8080/index?key=aa&val=bbbbb

    redis客户端测试结果

    参考资料:
    https://blog.csdn.net/zsg88/article/details/73715947

    redis各版本功能说明
    https://www.cnblogs.com/xingzc/p/9546849.html

    相关文章

      网友评论

        本文标题:Windows安装Redis集群,并整合SpringBoot2

        本文链接:https://www.haomeiwen.com/subject/jgmczctx.html