SpringBoot整合Redis

SpringBoot整合Redis

说明︰在SpringBoot2.x之后,原来使用的jedis 被替换为了lettuce?

jedis :采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池!更像BIO模

式lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据了,更像NIO模式

创建工程并引入依赖

    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>
    
    <dependency>
        <groupId>org.apache.commonsgroupId>
        <artifactId>commons-pool2artifactId>
        <version>2.11.1version>
    dependency>

配置redis连接信息

spring:
  data:
    redis:
      host: 8.130.104.8  # redis服务所在的主机地址
      port: 6379  # 连接的端口号
      database: 0  # 指定所使用的是那一个数据库
      timeout: 10000 # 连接超时时间
      #cluster:
      #  nodes: 192.168.72.130:6379, 192.168.72.130:6380, 192.168.72.130:6381
      lettuce:
        pool:
          max-active: 20
          max-wait: -1
          max-idle: 5
          min-idle: 0

功能测试

@SpringBootTest
class Redis01SpringbootApplicationTests {
	@Resource
	private RedisTemplate redisTemplate;
	@Test
	void contextLoads() {
		// redisTemplate
		// 除了进本的操作,我们常用的方法都可以直接通过redisTemplate操作,比如事务,和基本的crud
		// RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
		// connection.flushDb();
		redisTemplate.opsForValue().set("mykey","zhangsan");
		System.out.println(redisTemplate.opsForValue().get("mykey"));
	}
}

RedisTemplate 序列化 配置类

@Configuration
public class RedisConfig {
    // 固定模板
    @Bean
    @SuppressWarnings("all")
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // String 的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();

        return template;
    }
}

你可能感兴趣的:(Redis,spring,boot,redis,后端)