引入依赖
<!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>
application.properties 添加Redis配置
redis.cluster="192.168.74.142:7000,192.168.74.142:7001,192.168.74.142:7002,192.168.74.130:7003,192.168.74.130:7004,192.168.74.130:7005"#集群地址
redis.masterName="xxx"
redis.password="***"
@Configuration
public class RedisSentinelConfig {@Value("${redis.cluster}")private String nodesStr;@Value("${redis.masterName}")private String masterName;@Value("${redis.password}")private String masterName;private static final String COLON = ",";private static final String COMMA=":";// 配置RedisSentinelConfig@Beanpublic RedisSentinelConfiguration redisSentinelConfiguration(){RedisSentinelConfiguration configuration = new RedisSentinelConfiguration();String[] host = nodesStr.split(COLON);for (String redisHost : host) {String[] item = redisHost.split(COMMA);String ip = item[0];String port = item[1];configuration.addSentinel(new RedisNode(ip, Integer.parseInt(port)));}configuration.setMaster(masterName);return configuration;}// 配置redis连接池JedisSentinelPoolConfig@Beanpublic JedisPoolConfig jedisSentinelPoolConfiggg() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();//最大连接数,默认为8个,当连接池中的连接数达到最大连接数时,新的连接请求将会被阻塞,直到有连接被释放回连接池中jedisPoolConfig.setMaxTotal(3);//最大空闲连接数,默认为8个,当连接池中的空闲连接数超过最大空闲连接数时,多余的连接将会被关闭jedisPoolConfig.setMaxIdle(1);//JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();//jedisConnectionFactory.setjedisPoolConfig.setMinIdle(0);//当连接池中的连接耗尽且blockWhenExhausted为true时,等待获取连接的最大时间(单位为毫秒),默认值为-1,表示永不超时jedisPoolConfig.setMaxWaitMillis(2 * 1000L);//当连接池中的连接耗尽时,是否阻塞等待,默认值为true。如果设置为false,则当连接池中的连接耗尽时,会直接抛出异常jedisPoolConfig.setBlockWhenExhausted(true);//设置的逐出策略类名,默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数据超过最大空闲连接数)jedisPoolConfig.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");//是否启用Pool的JMX管理功能,默认为truejedisPoolConfig.setJmxEnabled(true);//在borrow一个jedis实例时,是否提前进行validate操作,如果为true,则得到的jedis实例均是可用的;//在从连接池中获取连接时,是否进行连接有效性检查,默认值为false。如果设置为true,则在获取连接时会调用validateObject方法进行连接有效性检查jedisPoolConfig.setTestOnBorrow(true);return jedisPoolConfig;}//配置redis连接工厂jedisConnectionFactry@Beanpublic JedisConnectionFactory jedisConnectionFactry(@Autowired RedisSentinelConfiguration configuration, @Autowired JedisPoolConfig jedisPoolConfig){JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(configuration, jedisPoolConfig);jedisConnectionFactory.setPassword(password);return jedisConnectionFactory;}//RedisTemplate配置类@Bean@Autowiredpublic StringRedisTemplate redisTemplate(RedisConnectionFactory jedisConnectionFactory) {// StringRedisSerializer和GenericJackson2JsonRedisSerializer是Spring Data Redis中常用的两种序列化方法// StringRedisSerializer是RedisTemplate默认的key和value的序列化方式,它将对象序列化为字符串存储在Redis中。它适用于存储简单的字符串类型数据,如字符串、数字等。// GenericJackson2JsonRedisSerializer是RedisTemplate默认的value的序列化方式,它使用Jackson库将对象序列化为JSON格式存储在Redis中。它适用于存储复杂的对象类型数据,如Java对象、集合、Map等// 如果存储的是简单的字符串类型数据,可以使用StringRedisSerializer。如果存储的是复杂的对象类型数据,可以使用GenericJackson2JsonRedisSerializer。也可以根据自己的需求自定义序列化方式StringRedisTemplate redisTemplate = new StringRedisTemplate();redisTemplate.setConnectionFactory(jedisConnectionFactory);// key采用String的序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());// valuevalue采用GenericJackson2JsonRedisSerializer序列化方式redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}
参考博客: https://blog.csdn.net/weixin_42338444/article/details/102682584?spm=1001.2014.3001.5506