springboot集成redis操作处理如下

一、application.yml配置

spring:
  profiles:
    active: env
  application:
    name: iot-interfaces-tcpauth
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
redis:
  host: 127.0.0.1
  port: 6379
  password:
  timeout: 10
  database: 1
  max-total: 8 # 最大连接数
  max-wait-millis: 1 # 最大阻塞时间
  max-idle: 4
  min-idle: 0

二、配置redis链接工厂

package net.kw360.tcpauth.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;

import java.time.Duration;

/**
 * @author KW360
 */
@Configuration
public class RedisConfig {

    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private Integer port;
    @Value("${redis.password}")
    private String password;
    @Value("${redis.database}")
    private int database;
    @Value("${redis.timeout}")
    private int timeout;
    @Value("${redis.max-wait-millis}")
    private long maxWaitMillis;
    @Value("${redis.max-total}")
    private Integer maxTotal;
    @Value("${redis.max-idle}")
    private Integer maxIdle;
    @Value("${redis.min-idle}")
    private Integer minIdle;

    @Bean
    public JedisPoolConfig jedisPoolConfig() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(maxTotal);
        poolConfig.setMaxIdle(maxIdle);
        poolConfig.setMinIdle(minIdle);
        poolConfig.setMaxWaitMillis(maxWaitMillis);
        // 其他配置项设置
        return poolConfig;
    }

    @Bean
    public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig poolConfig) {

        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName(host);
        config.setPassword(password);
        config.setDatabase(database);
        config.setPort(port);
        Duration readTimeout = Duration.ofSeconds(timeout);
        // 其他 Redis 配置项设置
        JedisClientConfiguration clientConfig = JedisClientConfiguration.builder()
                .readTimeout(readTimeout)
                .usePooling().poolConfig(poolConfig)
                .build();
        return new JedisConnectionFactory(config, clientConfig);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        RedisSerializer<?> stringSerializer = new StringRedisSerializer();
        GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();
        template.setConnectionFactory(connectionFactory);
        //StringRedisTemplate 序列化
        template.setKeySerializer(stringSerializer);
        template.setValueSerializer(jsonSerializer);
        //RedisTemplate<String, Object> 序列化
        template.setHashKeySerializer(stringSerializer);
        template.setHashValueSerializer(jsonSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

三、引用并操作

package net.kw360.tcpauth.core.handler;

import javax.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Objects;
import java.util.UUID;

/**
 * @author kw360
 */
@Component
public class AuthHandler {

    @Resource
    private RedisTemplate redisTemplate;

    public void onAuth() {

        String deviceCode = "002412451442";

        String ipStr = "<192.168.21.45>";
        if(Boolean.TRUE.equals(redisTemplate.opsForSet().isMember("{device}:{list}", deviceCode))) {
            ipStr = "<47.110.165.124>";
        }
    }
}