redis集成:springboot集成redis

参考:

Springboot2.x整合Redis以及连接哨兵模式/集群模式

springboot整合redis哨兵方式配置

Spring Boot 操作 Redis,三种方案全解析

Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了

Spring Boot中,Redis缓存还能这么用!

Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置

Spring Boot 项目实战(四)集成 Redis

Spring全家桶系列--SpringBoot入门Redis

Springboot使用RedisTemplate优雅地操作redis

Springboot-Redis分布式锁

SpringBoot 使用 Redis 缓存

Spring Boot & Redis 用起来真简单!

一起来学 SpringBoot 2.x | 第九篇:整合Lettuce Redis

一起来学 SpringBoot 2.x | 第十篇:使用Spring Cache集成Redis

spring data redis 连接单机版redis

还需要引入连接池的依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
View Code

application.properties

spring.redis.database=0
spring.redis.password=123456  //设置的密码
spring.redis.port=6379    //端口
spring.redis.host=10.3.13.197  //ip地址
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=1ms
spring.redis.lettuce.shutdown-timeout=100ms
View Code

service层代码

package com.redis.example.redistest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;

@Service
public class HelloService {
    @Autowired
    RedisTemplate redisTemplate;
    public void hello() {
//针对 key 的操作,相关的方法就在 RedisTemplate 中
//针对具体数据类型的操作,相关的方法需要首先获取对应的数据类型,获取相应数据类型的操作方法是 opsForXXX
//调用该方法就可以将数据存储到 Redis 中去了
        ValueOperations ops = redisTemplate.opsForValue();
        ops.set("k1", "v1");
        Object k1 = ops.get("k1");
        System.out.println(k1);
    }
}
View Code

Test调用

package com.redis.example.redistest;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedistestApplicationTests {
    @Autowired
    private  HelloService helloService;
    @Test
    public  void  testRedis(){
        helloService.hello();
    }
}
View Code

Spring Boot 中 Redis 的自动化配置类 (源码)

@Configuration //首先标记这个是一个配置类,
//同时该配置在 RedisOperations 存在的情况下才会生效(即项目中引入了 Spring Data Redis)
@ConditionalOnClass(RedisOperations.class) 
@EnableConfigurationProperties(RedisProperties.class)//导入在 application.properties 中配置的属性
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })//导入连接池信息(如果存在的话)
public class RedisAutoConfiguration {
    //提供了两个 Bean ,RedisTemplate 和 StringRedisTemplate ,
    //其中 StringRedisTemplate 是 RedisTemplate 的子类,两个的方法基本一致,
    //不同之处主要体现在操作的数据类型不同,RedisTemplate 中的两个泛型都是 Object ,
    //意味者存储的 key 和 value 都可以是一个对象,而 StringRedisTemplate 的 两个泛型都是 String ,
    //意味者 StringRedisTemplate 的 key 和 value 都只能是字符串。如果开发者没有提供相关的 Bean ,
    //这两个配置就会生效,否则不会生效。
        @Bean
        @ConditionalOnMissingBean(name = "redisTemplate")
        public RedisTemplate<Object, Object> redisTemplate(
                        RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
                RedisTemplate<Object, Object> template = new RedisTemplate<>();
                template.setConnectionFactory(redisConnectionFactory);
                return template;
        }
        @Bean
        @ConditionalOnMissingBean
        public StringRedisTemplate stringRedisTemplate(
                        RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
                StringRedisTemplate template = new StringRedisTemplate();
                template.setConnectionFactory(redisConnectionFactory);
                return template;
        }
}
View Code

 

 

posted @ 2019-12-09 13:54  弱水三千12138  阅读(141)  评论(0编辑  收藏  举报