springboot(21)自定义RedisConnectionFactory

由于未提供博客具体内容,无法给出包含关键信息的摘要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Value("${spring.redis.host}")
private String redisHost;

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

@Value("${spring.redis.timeout}")
private int redisTimeout;

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

@Value("${spring.redis.database}")
private int redisDb;

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

@Value("${spring.redis.jedis.pool.max-wait}")
private int maxWait;

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

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

@Bean
public RedisConnectionFactory connectionFactory() {
    JedisPoolConfig poolConfig = new JedisPoolConfig();
    poolConfig.setMaxTotal(maxActive);
    poolConfig.setMaxIdle(maxIdle);
    poolConfig.setMaxWaitMillis(maxWait);
    poolConfig.setMinIdle(minIdle);
    poolConfig.setTestOnBorrow(true);
    poolConfig.setTestOnReturn(false);
    poolConfig.setTestWhileIdle(true);
    JedisClientConfiguration clientConfig = JedisClientConfiguration.builder()
            .usePooling().poolConfig(poolConfig).and().readTimeout(Duration.ofMillis(redisTimeout)).build();

    // 单点redis
    RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
    // 哨兵redis
    // RedisSentinelConfiguration redisConfig = new RedisSentinelConfiguration();
    // 集群redis
    // RedisClusterConfiguration redisConfig = new RedisClusterConfiguration();
    redisConfig.setHostName(redisHost);
    redisConfig.setPassword(RedisPassword.of(redisAuth));
    redisConfig.setPort(redisPort);
    redisConfig.setDatabase(redisDb);

    return new JedisConnectionFactory(redisConfig,clientConfig);
}
Spring Boot 自定义 Redis 主要是指在基于 Spring Boot 的应用程序中,当你需要更深入地控制或扩展对 Redis 数据库的操作,而不是仅仅依赖 Spring Data Redis 的默认配置。这通常包括以下几个步骤: 1. 添加依赖:首先,你需要在 `pom.xml` 或 `build.gradle` 文件中添加特定的 Redis 客户端依赖,如 `spring-boot-starter-data-redis` 或者单独的 `lettuce-core`。 ```xml <!-- Maven --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- Gradle (Lettuce) --> implementation 'io.lettuce:lettuce-core' ``` 2. 配置Redis:在 `application.properties` 或 `application.yml` 中配置 Redis 连接信息,如主机名、端口、密码等。 ```yaml spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=your-password ``` 3. 自定义连接工厂:如果你想要创建自己的 Redis 连接工厂,可以继承 `AbstractRedisConnectionFactory` 并覆盖必要的方法。例如,你可以设置超时时间或者使用 SSL 连接。 ```java @Configuration public class CustomRedisConfig { @Bean public RedisConnectionFactory customConnectionFactory() { LettuceConnectionFactory factory = new LettuceConnectionFactory(); // 设置连接超时时间 factory.setTimeout(5000); // 自定义SSL配置 factory.setUse lettuceCluster().withSsl(); return factory; } } ``` 4. 使用自定义 RedisTemplate:创建并配置自定义 `RedisTemplate`,它可以让你直接操作 Redis,比如 `StringRedisTemplate`, `HashOperations` 等。 ```java @Bean public StringRedisTemplate stringRedisTemplate(CustomRedisConnectionFactory connectionFactory) { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(connectionFactory); return template; } ``` 5. 实现自己的 RedisService 或 Repository:根据应用需求,你可以编写自己的业务服务类或者数据访问层,注入自定义的 `RedisTemplate` 进行操作。 ```java @Service public class MyCustomRedisService { private final StringRedisTemplate redisTemplate; @Autowired public MyCustomRedisService(StringRedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } // 自定义操作方法,如 set/get 命令 public void saveData(String key, String value) { redisTemplate.opsForValue().set(key, value); } // ... } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值