189 8069 5689

spring-boot使用lettuceredis客户端的方法

这篇文章主要介绍“spring-boot使用lettuce redis客户端的方法”,在日常操作中,相信很多人在spring-boot使用lettuce redis客户端的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spring-boot使用lettuce redis客户端的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

成都创新互联-专业网站定制、快速模板网站建设、高性价比巩义网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式巩义网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖巩义地区。费用合理售后完善,十多年实体公司更值得信赖。

config类:

package net.loyin.cloud.upms.config;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
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.*;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.time.Duration;
import java.util.HashSet;
import java.util.Set;

@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
    @Value("${spring.redis.database:0}")
    private int database;

    @Value("${spring.redis.host:localhost}")
    private String host;
    @Value("${spring.redis.nodes:}")
    private String clusterNodes;

    @Value("${spring.redis.password:}")
    private String password;

    @Value("${spring.redis.port:6379}")
    private int port;

    @Value("${spring.redis.timeout:1000}")
    private long timeout;

    @Value("${spring.redis.lettuce.pool.max-idle:8}")
    private int maxIdle;

    @Value("${spring.redis.lettuce.pool.min-idle:8}")
    private int minIdle;

    @Value("${spring.redis.lettuce.pool.max-active:10}")
    private int maxActive;

    @Value("${spring.redis.lettuce.pool.max-wait:-1}")
    private long maxWait;

    /**
     * 配置自定义redisTemplate
     *
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);

        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
        /*Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(mapper);*/


        //使用StringRedisSerializer来序列化和反序列化redis的key值
        StringRedisSerializer stringRedisSerializer=new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        template.setHashValueSerializer(stringRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

    @Bean
    LettuceConnectionFactory redisConnectionFactory() {
        RedisConfiguration redisConfiguration = null;
        if (clusterNodes != null&&"".equals(clusterNodes)==false) {
            // 集群版配置
            RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
            String[] serverArray = clusterNodes.split(",");
            Set nodes = new HashSet();
            for (String ipPort : serverArray) {
                String[] ipAndPort = ipPort.split(":");
                nodes.add(new RedisNode(ipAndPort[0].trim(), Integer.valueOf(ipAndPort[1])));
            }
            redisClusterConfiguration.setPassword(RedisPassword.of(password));
            redisClusterConfiguration.setClusterNodes(nodes);
//            redisClusterConfiguration.setMaxRedirects(maxRedirects);
            redisConfiguration = redisClusterConfiguration;
        } else {
            // 单机版配置
            RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
            redisStandaloneConfiguration.setDatabase(database);
            redisStandaloneConfiguration.setHostName(host);
            redisStandaloneConfiguration.setPort(port);
            if (password != null && "".equals(password) == false) {
                redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
            }
            redisConfiguration = redisStandaloneConfiguration;
        }


        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        poolConfig.setMaxIdle(maxIdle);
        poolConfig.setMinIdle(minIdle);
        poolConfig.setMaxTotal(maxActive);
        poolConfig.setMaxWaitMillis(maxWait);
        LettuceClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
                .commandTimeout(Duration.ofMillis(timeout))
                .poolConfig(poolConfig)
                .build();

        LettuceConnectionFactory factory = new LettuceConnectionFactory(redisConfiguration, clientConfig);
        return factory;
    }
}

yml文件:

spring:
  redis:
    database: 0 # Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
    host: 192.168.86.130
    port: 6379
    lettuce: # netty 线程安全的reids客户端
      pool:
        max-active: 8  # 连接池最大连接数(使用负值表示没有限制) 默认 8
        max-idle: 8 # 连接池中的最大空闲连接 默认 8
        max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
        min-idle: 0 # 连接池中的最小空闲连接 默认 0
    timeout: 10000 # 连接超时(ms)

如上配置,使用了连接池。

pom.xml如下:



    4.0.0

    net.loyin.study
    redis
    1.0-SNAPSHOT
    
        
            aliyun-repos
            https://maven.aliyun.com/repository/public
            
                false
            
        
    
    
        1.8
        2.1.7.RELEASE
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.7.RELEASE
    
    
        
            org.projectlombok
            lombok
            1.18.8
            compile
        
        
            org.springframework.boot
            spring-boot-starter-web
            ${spring.boot.version}
            
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
            ${spring.boot.version}
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.apache.commons
            commons-pool2
        
    
    
        
            
                org.apache.maven.plugins
                maven-deploy-plugin
                ${maven-deploy-plugin.version}
                
                    true
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${java.version}
                    ${java.version}
                
            
        
    

到此,关于“spring-boot使用lettuce redis客户端的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


文章名称:spring-boot使用lettuceredis客户端的方法
网站地址:http://cdxtjz.com/article/ieeoce.html

其他资讯